Reputation: 284
I have prepared the custom toolbar toolbar.xml
file as below:
<?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>
Now I have created a menu directory, and in that toolbar_menu.xml
file as below:
<?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>
Now I have included this toolbar layout
in my main activity. xml
with <include/>
tag.
After all this implementation I have set the toolbar in MainActivity.kt
which is as below:
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)
}
My toolbar is appearing on the main screen when app runs but the menu is not visible. I am wondering that what is wrong going on in my code??
Upvotes: 0
Views: 1695
Reputation: 368
Inside onCreate
..
setSupportActionBar(findViewById(R.id.my_toolbar1))
..
Inside onCreateOptionsMenu
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.menu_toolbar, menu)
return super.onCreateOptionsMenu(menu)
}
Upvotes: 1