我有一个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>
请注意我仍想在智能手机上对此菜单进行充气,但不想在平板电脑上使用它。
答案 0 :(得分: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或更高版本,因此您必须考虑到这一点。