应用栏允许您添加用户操作的按钮。 此功能允许您将当前上下文的最重要操作放在应用程序的顶部。 例如,当用户查看他们的照片卷时,照片浏览应用可能会显示共享并在顶部创建相册按钮; 当用户查看单张照片时,该应用可能会显示裁剪和过滤按钮。
应用栏中的空间有限。 如果某个应用声明了比应用栏中更多的操作,则应用栏会将多余的操作发送到溢出菜单。 该应用还可以指定应始终在溢出菜单中显示操作,而不是显示在应用栏上。
[站外图片上传中...(image-fbfb5d-1533688727074)]
一、添加动作按钮
动作溢出中可用的所有操作按钮和其他项都在XML
菜单资源中定义。 要向操作栏添加操作,请在项目的res / menu /
目录中创建新的XML
文件。
为要包含在操作栏中的每个项添加<item>元素,如菜单XML文件的此代码示例所示:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- "Mark Favorite", should appear as action button if possible -->
<item android:id="@+id/action_favorite"
android:icon="@drawable/ic_favorite_black_48dp"
android:title="@string/action_favorite"
app:showAsAction="ifRoom"/>
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
app:showAsAction="never"/>
</menu>
app:showAsAction
属性指定操作是否应显示为应用栏上的按钮。 如果您设置app:showAsAction =“ifRoom”
(如示例代码中最喜欢的操作),如果应用栏中有空间,则操作将显示为按钮; 如果没有足够的空间,则会向溢出菜单发送多余的操作。 如果您设置app:showAsAction =“never”
(如示例代码的设置操作中所示),则操作始终列在溢出菜单中,不会显示在应用栏中。
如果操作显示在应用栏中,系统会将操作图标用作操作按钮。 您可以在“材质图标”页面上找到许多有用的图标。
二、回应动作
当用户选择其中一个应用栏项时,系统将调用您的活动的onOptionsItemSelected()
回调方法,并传递一个MenuItem
对象以指示单击了哪个项。 在onOptionsItemSelected()
的实现中,调用MenuItem.getItemId()
方法来确定按下了哪个项目。 返回的ID
与您在相应<item>
元素的android:id
属性中声明的值匹配。
例如,以下代码检查用户选择的操作。 如果方法无法识别用户的操作,则会调用超类方法:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
// User chose the "Settings" item, show the app settings UI...
return true;
case R.id.action_favorite:
// User chose the "Favorite" action, mark the current item
// as a favorite...
return true;
default:
// If we got here, the user's action was not recognized.
// Invoke the superclass to handle it.
return super.onOptionsItemSelected(item);
}
}