Define a Menu
for your Toolbar
in the res/menu resource folder, for example:
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"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activity.MainActivity">
<item
android:id="@+id/action_sign_out"
android:title="@string/toolbar_sign_out"
app:showAsAction="never"/>
</menu>
Setting app:showAsAction="never"
ensures that this MenuItem
will not be shown in the Toolbar
, but placed in the overflow menu instead.
The theme of your Activity
should be (or derive from) one of the NoActionBar
themes (Theme.AppCompat.NoActionBar
for example, or Theme.MaterialComponents.NoActionBar
if you're using Material Components).
In your Activity
, set up your Toolbar
:
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
And override onCreateOptionsMenu()
to inflate your previously defined menu resource:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_menu, menu);
return true;
}
You can override onOptionsItemSelected()
to define the onClick behaviour of your MenuItem
(s):
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_sign_out: {
// do your sign-out stuff
break;
}
// case blocks for other MenuItems (if any)
}
return true;
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…