如何使自定义工具栏菜单为我的android应用程序可见



我已经准备好了自定义工具栏toolbar.xml文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:layout="http://schemas.android.com/tools"
android:id="@+id/my_toolbar1"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#BCBCDD"
android:elevation="4dp"
app:logo="@drawable/ic_baseline_menu_24"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
</androidx.appcompat.widget.Toolbar>

现在我创建了一个菜单目录,在toolbar_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">
<item
android:id="@+id/menu_share"
android:title="Share"/>
<item
android:id="@+id/menu_settings"
app:showAsAction="always"
android:icon="@drawable/ic_baseline_settings_24"
android:title="Settings"/>
<item
android:id="@+id/menu_exit"
android:title="Exit"/>
</menu>

现在我已经将这个toolbar layout包含在带有<include/>标签的my main activity. xml中。在所有这些实现之后,我在MainActivity.kt中设置了工具栏,如下所示:

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(my_toolbar.findViewById(R.id.my_toolbar1)) //Set the Action Bar -> toolbar
val apiService : ApiService = ApiClient.getClient()
coronaRepository =
CoronaDetailsRepository(
apiService
)
viewModel = getViewModel(1,1)
viewModel.coronaDetails.observe(this, Observer {
bindUI(it)
})
viewModel.networkState.observe(this, Observer {
loader.visibility = if (it == NetworkState.LOADING) View.VISIBLE else View.GONE
})
}

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.toolbar_menu, menu)   // Used Menu Inflater to inflate the layout
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId){
R.id.menu_share -> Toast.makeText(applicationContext, "Share", Toast.LENGTH_SHORT).show()
R.id.menu_settings -> Toast.makeText(applicationContext, "Settings", Toast.LENGTH_SHORT).show()
R.id.menu_exit -> Toast.makeText(applicationContext, "Exit", Toast.LENGTH_SHORT).show()
}
return super.onOptionsItemSelected(item)
}

当应用程序运行时,我的工具栏会出现在主屏幕上,但菜单不可见。我想知道我的代码中出了什么问题??

内部创建

..
setSupportActionBar(findViewById(R.id.my_toolbar1))
..

内部创建选项菜单

override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_toolbar, menu)
return super.onCreateOptionsMenu(menu)
}

相关内容

最新更新