android.support.v7 与 `ActionBarActivity` 没有菜单显示

标签 android android-actionbar android-menu android-support-library

在新的更新中,Google 发布了一个新的 API 支持库,它支持 API 级别 7+ 中的 ActionBar。

在这次更新之前我一直使用 ActionBarSherlock,我编写了加载菜单的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.activity_main, menu);
    return true;
}

和菜单文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/item_menu_ok" android:icon="@drawable/ic_action_ok"
        android:title="@string/ok" android:showAsAction="always"></item>
    <item android:id="@+id/item_menu_cancel" android:icon="@drawable/ic_action_cancel"
        android:title="@string/cancel" android:showAsAction="always"></item>
</menu>

在操作栏上设置菜单按钮。此代码与 ActionBarSherlock 完美配合。但是当我将操作栏更改为新的支持库时,操作栏中不会显示按钮。即使它们被设置为 android:showAsAction="always"。当我调试代码时,函数 menu.getSize() 返回 2,这是正确的,但没有显示任何按钮..

为什么新的支持库中没有显示按钮?

最佳答案

尝试按设备或模拟器上的 MENU 按钮,看看它们是否出现在溢出中。

如果他们这样做了,那么问题是您的 <menu> XML 需要改变。与 ActionBarSherlock 和 native API 级别 11+ 操作栏一起使用的菜单 XML 将无法与 AppCompat 操作栏向后移植一起使用。

您的菜单 XML 需要如下所示:

<?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:yourapp="http://schemas.android.com/apk/res-auto"
>
    <item android:id="@+id/item_menu_ok" android:icon="@drawable/ic_action_ok"
        android:title="@string/ok" yourapp:showAsAction="always"></item>
    <item android:id="@+id/item_menu_cancel" android:icon="@drawable/ic_action_cancel"
        android:title="@string/cancel" yourapp:showAsAction="always"></item>
</menu>

您需要使用相同的 yourapp与操作栏相关的任何其他内容的前缀(例如 yourapp:actionLayout )。

您可以在 the action bar documentation 中看到此内容.

关于android.support.v7 与 `ActionBarActivity` 没有菜单显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17881547/

相关文章:

java - 使用php将base64图像从android上传到服务器时出错

android - 针对 SDK Android Q 导致无法完成 session : INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2

java - 如何设置 Android ActionBarCompat 标题文本的样式

Android:Fragment 的 onOptionsItemSelected 没有被调用

android全屏模式(ICS),第一次触摸显示导航栏

android - 删除操作栏上的额外图标(使用 ShareActionProvider 和 ActionBarSherlock 时)

Android 如何知道你的标签何时获得焦点,

android - 菜单图标不显示

android - setShowsAsAction 在 API 11 以下不工作

android - 为什么在 Android 中使用 HandlerThread