即使标题中有空间,我仍然坚持使用ABS中的菜单项可见性。事情是我在不同尺寸的设备上测试,但在每种情况下我只能看到一个,那就是溢出菜单。
我正在使用onPrepareOptionsMenu
动态管理我的菜单,并且工作正常。(但不知道可能是这个问题发生在onPrepareOptionsMenu
或其他原因)。
查看差异:
第一种方法我以编程方式创建菜单,并使用setShowAsAction()设置该可见性。在某个地方我也发现了setShowAsActionflag(),我也试过了。但在这种情况下,我无法在small screen 320*480
中看到溢出菜单。所以,这是我在编程方法上的问题。
这是我的代码
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// TODO Auto-generated method stu
// TO Remove older menu otherwise that will apped menu each time.
menu.clear();
menu.add(Menu.NONE, MENU_SEARCH, Menu.NONE, "Search").setIcon(R.drawable.ic_search).setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
menu.add(Menu.NONE, MENU_SETTING, Menu.NONE, "Settings").setIcon(R.drawable.ic_action_settings)
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
if (is_session_exist == 1) {
menu.add(Menu.NONE, MENU_CHANGE_LOGIN, Menu.NONE, "Change Login").setIcon(R.drawable.ic_action_add_person)
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
menu.add(Menu.NONE, MENU_LOGOUT, Menu.NONE, "Logout").setIcon(R.drawable.abs__ic_clear)
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
} else {
menu.add(Menu.NONE, MENU_LOGIN, Menu.NONE, "Login").setIcon(R.drawable.ic_action_add_person)
.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
}
return super.onPrepareOptionsMenu(menu);
}
第二种方法我使用XML文件夹创建菜单,并将所有属性设置在单独的文件中。现在我在onPrepareOptionsMenu
中使用该菜单,但在这种情况下,我只能在任何密度屏幕上看到溢出图标,即使我已设置android:showAsAction="ifRoom|withText"
这是我的XML代码。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/mainMenu"
android:icon="@drawable/abs__ic_menu_moreoverflow_holo_dark"
android:showAsAction="always">
<menu>
<item
android:id="@+id/menu_search"
android:icon="@drawable/ic_search"
android:showAsAction="ifRoom|withText"
android:title="Search"
android:visible="true"/>
<item
android:id="@+id/menu_login"
android:icon="@drawable/ic_action_add_person"
android:showAsAction="ifRoom|withText"
android:title="Login"
android:visible="true"/>
<item
android:id="@+id/menu_change_login"
android:icon="@drawable/ic_action_add_person"
android:showAsAction="ifRoom|withText"
android:title="Change Login"
android:visible="false"/>
<item
android:id="@+id/menu_setting"
android:icon="@drawable/ic_action_settings"
android:showAsAction="ifRoom|withText"
android:title="Setting"
android:visible="true"/>
<item
android:id="@+id/menu_logout"
android:icon="@drawable/abs__ic_clear"
android:showAsAction="ifRoom|withText"
android:title="Logout"
android:visible="false"/>
</menu>
</item>
</menu>
我正在使用onPrepareOptionsMenu
setVisible(false/true);
中的菜单项
这里有一些有用的链接,我已经提到但问题尚未解决。
Set android:showAsAction="ifRoom|withText" programmatically
How to add text to icons in ActionBar?
我不知道为什么我会得到这个问题。你的帮助和努力肯定会受到欢迎。
谢谢。
答案 0 :(得分:5)
我想,对于屏幕分辨率为320x480的设备,您不会得到溢出图标,而是点击设备的菜单按钮,您可以获得其余菜单项,如下图所示:
答案 1 :(得分:1)
您有两个menu
(1)嵌套
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item..
">
<menu>
删除溢出菜单项应该都是单一菜单..它会自动显示。
更新了菜单xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_search"
android:icon="@drawable/ic_search"
android:showAsAction="ifRoom|withText"
android:title="Search"
android:visible="true"/>
<item
android:id="@+id/menu_login"
android:icon="@drawable/ic_action_add_person"
android:showAsAction="ifRoom|withText"
android:title="Login"
android:visible="true"/>
<item
android:id="@+id/menu_change_login"
android:icon="@drawable/ic_action_add_person"
android:showAsAction="ifRoom|withText"
android:title="Change Login"
android:visible="false"/>
<item
android:id="@+id/menu_setting"
android:icon="@drawable/ic_action_settings"
android:showAsAction="ifRoom|withText"
android:title="Setting"
android:visible="true"/>
<item
android:id="@+id/menu_logout"
android:icon="@drawable/abs__ic_clear"
android:showAsAction="ifRoom|withText"
android:title="Logout"
android:visible="false"/>
</menu>