为什么我的菜单项总是显示在溢出菜单中?

时间:2014-04-02 13:43:16

标签: android android-actionbar android-actionbar-compat android-optionsmenu

屏幕截图中未显示溢出点的原因是因为此模拟器具有菜单按钮。但菜单按下会显示该项目。

NerdLauncherFragment.java:

@Override
public void onCreate(Bundle savedInstanceState) {
    … 
    setHasOptionsMenu(true);
    … 
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.nerd_launcher, menu);
}

nerd_launcher.xml:

<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="com.bignerdranch.android.nerdlauncher.nerdlauncher.NerdLauncherActivity" >

    <item android:id="@+id/action_settings"
          android:icon="@drawable/ic_launcher"
          android:title="R"
          app:showAsAction="always" />
</menu>

enter image description here

当我按照其他答案中的建议为showAsAction创建自定义命名空间时,我确信我已经弄明白了,但我的项目仍然停留在溢出菜单中。

2 个答案:

答案 0 :(得分:1)

通过扩展ActionBarActivity并将活动主题设置为ActionBar或类似主题,您可以在API级别7或更高级别上运行时为您的活动添加Theme.AppCompat

答案 1 :(得分:0)

尝试使用以下代码段,您可以禁用硬件菜单按钮并在操作栏中显示溢出图标

你的onCreate方法中的

ViewConfiguration config = ViewConfiguration.get(this);
            Field menuKeyField = ViewConfiguration.class
                    .getDeclaredField("sHasPermanentMenuKey");
            if (menuKeyField != null) {
                menuKeyField.setAccessible(true);
                menuKeyField.setBoolean(config, false);
            }