使用 Android Kotlin 的自定义工具栏选项不起作用
Custom Toolbar Options using Android Kotlin is not working
我在MainActivity.kt
中写了下面的代码
我可以制作三行菜单图标,
我没有收到任何错误,但菜单也没有打开,我在下面的代码中写了:
package com.mytestapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import androidx.appcompat.widget.Toolbar
import androidx.core.content.ContextCompat
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(app_toolbar)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.main_menu, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.myid -> {
Toast.makeText(applicationContext, "click on setting", Toast.LENGTH_LONG).show()
true
}
R.id.share_app ->{
Toast.makeText(applicationContext, "click on exit", Toast.LENGTH_LONG).show()
return true
}
else -> super.onOptionsItemSelected(item)
}
}
}
activity_main.xml 是:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/app_toolbar"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginBottom="-50dp"
android:background="@android:color/transparent"
android:clipToPadding="false"
android:gravity="end"
app:title="Menu"
app:subtitle="Options"
app:navigationIcon="@drawable/ic_menu_preferences"
app:subtitleTextColor="#000000"
app:titleTextColor="#000000" />
</LinearLayout>
</ScrollView>
main_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.mytestapp">
<item
android:id="@+id/myid"
android:enabled="true"
android:icon="@android:drawable/ic_input_add"
android:title="@string/mytitle"
android:visible="true"
app:showAsAction="ifRoom" />
<item
android:id="@+id/share_app"
android:icon="@drawable/ic_menu_share"
android:title="@string/share" />
</menu>
我开始使用 Kotlin 进行 Android 开发,但在您的 onCreate 方法中试试这个:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar: Toolbar = findViewById<View>(R.id.app_toolbar) as Toolbar
setSupportActionBar(toolbar)
}
编辑:
然后,更新您的 activity_main.xml
以将 layout_width
值替换为 match_parent
(工具栏将占用父级的宽度,整个屏幕)并删除 layout_marginBottom
(或将值替换为另一个值和非负)。
希望对你有所帮助!
我在MainActivity.kt
中写了下面的代码我可以制作三行菜单图标,
我没有收到任何错误,但菜单也没有打开,我在下面的代码中写了:
package com.mytestapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import androidx.appcompat.widget.Toolbar
import androidx.core.content.ContextCompat
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(app_toolbar)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu; this adds items to the action bar if it is present.
menuInflater.inflate(R.menu.main_menu, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.myid -> {
Toast.makeText(applicationContext, "click on setting", Toast.LENGTH_LONG).show()
true
}
R.id.share_app ->{
Toast.makeText(applicationContext, "click on exit", Toast.LENGTH_LONG).show()
return true
}
else -> super.onOptionsItemSelected(item)
}
}
}
activity_main.xml 是:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/app_toolbar"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginBottom="-50dp"
android:background="@android:color/transparent"
android:clipToPadding="false"
android:gravity="end"
app:title="Menu"
app:subtitle="Options"
app:navigationIcon="@drawable/ic_menu_preferences"
app:subtitleTextColor="#000000"
app:titleTextColor="#000000" />
</LinearLayout>
</ScrollView>
main_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.mytestapp">
<item
android:id="@+id/myid"
android:enabled="true"
android:icon="@android:drawable/ic_input_add"
android:title="@string/mytitle"
android:visible="true"
app:showAsAction="ifRoom" />
<item
android:id="@+id/share_app"
android:icon="@drawable/ic_menu_share"
android:title="@string/share" />
</menu>
我开始使用 Kotlin 进行 Android 开发,但在您的 onCreate 方法中试试这个:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar: Toolbar = findViewById<View>(R.id.app_toolbar) as Toolbar
setSupportActionBar(toolbar)
}
编辑:
然后,更新您的 activity_main.xml
以将 layout_width
值替换为 match_parent
(工具栏将占用父级的宽度,整个屏幕)并删除 layout_marginBottom
(或将值替换为另一个值和非负)。
希望对你有所帮助!