Android - 从ActionBar中移除“更多操作”按钮

3

我有一个ActionBar,应该以自定义方式显示操作按钮。为此,我创建了一个自定义视图并将其附加到ActionBar。

需要注意的一件事是,我正在使用menu.xml资源文件加载选项菜单并在智能手机上显示它们,但不要在平板电脑上显示它们,而是使用自定义视图。为此,我将xml中的每个菜单项标记为:android:showAsAction="never"

除了右侧ActionBar上仍然存在的“更多”按钮外,一切看起来都很好。

我该如何删除它?

enter image description here

我尝试过这个:

ActionBar bar = activity.getActionBar();
bar.removeAllTabs();

但是“更多”按钮仍然存在。
编辑: 这是我的menu.xml文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_username"
        android:icon="@drawable/menu_username"
        android:orderInCategory="0"
        android:showAsAction="never"
        android:title="@string/menu_username">
        <menu>
            <item
                android:id="@+id/menu_logout"
                android:title="@string/menu_logout"/>
        </menu>
    </item>

    <item
        android:id="@+id/menu_settings"
        android:icon="@drawable/menu_settings"
        android:orderInCategory="1"
        android:showAsAction="never"
        android:title="@string/menu_settings"/>

    <item
        android:id="@+id/menu_search"
        android:icon="@drawable/menu_search"
        android:orderInCategory="1"
        android:showAsAction="never"
        android:title="@string/menu_search"/>

</menu>

请注意,我仍然希望在智能手机上扩展该菜单,但不想在平板电脑上使用它。

如果您的操作栏中有项目,那么这个应该只会出现在您的操作栏中。请发布您的 menu.xml 资源以及您使用它的位置/方式。此外,这与操作栏中的选项卡无关,这就是为什么您的 removeAllTabs() 调用没有效果的原因——这不是一个选项卡,而是溢出提示。 - CommonsWare
那句话的意思是“我希望所有三个项目都在溢出中”。这就是为什么我要求您展示您如何使用该资源的原因。 - CommonsWare
1个回答

2

showAsAction="never"设置为"never"会强制将菜单项放入溢出菜单中。为什么不在onCreateOptionsMenu(...)中检查设备是否为平板电脑,如果是的话就不要填充菜单?可以像这样操作:

public boolean onCreateOptionsMenu(Menu menu) {
    if (getResources().getConfiguration().smallestScreenWidthDp >= 600) {
        //It's a tablet, don't inflate, only create the manual view
        manualMenuCreation();
    } else {
        getMenuInflater().inflate(R.menu.menu, menu);
    }
    return true;
}

不要忘记smallestScreenWidthDp只在3.2或以上版本中可用,因此您需要考虑这一点。


我知道这是一个旧答案,但请告诉我什么是manualMenuCreation()方法? - vjs3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接