3

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

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

一切看起来都很好,除了一个仍然保留在 ActionBar 右侧的小东西——“更多”按钮。

我怎样才能删除它?

在此处输入图像描述

我试过这个:

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>

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

4

1 回答 1

2

设置showAsAction="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 或更高版本中可用,因此您必须考虑到这一点。

于 2012-06-09T14:34:39.793 回答