我正在使用android-support-v7-appcompat来向后兼容,因为我想在我的应用程序中使用ActionBar。我已经添加了菜单。
这是我的menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:DetailsPage="http://schemas.android.com/apk/res-auto" >
<!-- <item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"/> -->
<item
android:id="@+id/menu_item_search"
DetailsPage:actionViewClass="android.support.v7.widget.SearchView"
DetailsPage:showAsAction="always"
android:icon="@drawable/abc_ic_search"
android:title="Search Products">
</item>
<item
android:id="@+id/root_menu"
DetailsPage:showAsAction="always"
android:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_light"
android:title="More">
<menu>
<item
android:id="@+id/menu_Home"
DetailsPage:showAsAction="ifRoom|withText"
android:icon="@drawable/abc_ic_search"
android:showAsAction="ifRoom|withText"
android:title="Home"/>
<item
android:id="@+id/menu_favourite"
DetailsPage:showAsAction="ifRoom|withText"
android:icon="@drawable/abc_ic_search"
android:showAsAction="ifRoom|withText"
android:title="favourite"/>
<item
android:id="@+id/menu_Balance"
DetailsPage:showAsAction="ifRoom|withText"
android:icon="@drawable/abc_ic_search"
android:showAsAction="ifRoom|withText"
android:title="Balance"/>
<item
android:id="@+id/menu_logout"
android:icon="@drawable/abc_ic_search"
DetailsPage:showAsAction="ifRoom|withText"
android:showAsAction="ifRoom|withText"
android:title="Logout"/>
</menu>
</item>
</menu>
在我的活动中,我使用ActionBarActivity和
扩展了我的活动这是我的onCreateOptionsMenu
::
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu, menu);
}
目前点击菜单项时,它显示为::
此处菜单显示在2.3.3中,但作为我不想要的上下文菜单。
我想要的是(在4.2.2中捕获)
上面编写的代码完美地运行并给我想要的结果,我也可以设置图像和menuitem,但是如果我在2.3中运行相同的代码,相同的代码会给我菜单作为上下文菜单。
所以我错过了什么? 我需要做什么改变才能实现2.3中我想要的输出,我得到的是3.0 +?
希望我的问题很明确......
任何帮助/链接将不胜感激....
提前致谢....
编辑::(在应用commonsware的答案之后)
修改menu.xml
(我希望我理解正确)
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:DetailsPage="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/menu_item_search"
DetailsPage:actionViewClass="android.support.v7.widget.SearchView"
DetailsPage:showAsAction="never"
android:icon="@drawable/abc_ic_search"
android:title="Search Products">
</item>
<item
android:id="@+id/menu_Home"
DetailsPage:showAsAction="never"
android:icon="@drawable/abc_ic_search"
android:showAsAction="ifRoom|withText"
android:title="Home"/>
<item
android:id="@+id/menu_favourite"
DetailsPage:showAsAction="never"
android:icon="@drawable/abc_ic_search"
android:showAsAction="ifRoom|withText"
android:title="favourite"/>
<item
android:id="@+id/menu_Balance"
DetailsPage:showAsAction="never"
android:icon="@drawable/abc_ic_search"
android:showAsAction="ifRoom|withText"
android:title="Balance"/>
<item
android:id="@+id/menu_logout"
DetailsPage:showAsAction="never"
android:icon="@drawable/abc_ic_search"
android:showAsAction="ifRoom|withText"
android:title="Logout"/>
</menu>
输出::
答案 0 :(得分:1)
我有一个类似的问题,我解决它的方式是使用自定义命名空间,例如:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
android:title="@string/settings"
app:showAsAction="ifRoom|withText" />
<item
android:id="@+id/action_logout"
android:title="@string/logout"
app:showAsAction="always|withText" />
</menu>
但我不知道这是解决方案还是解决方法。
答案 1 :(得分:0)
第1步:移除图标为<item>
"@drawable/abc_ic_menu_moreoverflow_normal_holo_light
步骤2:将上述菜单项子菜单中的<item>
元素移动到主<menu>
元素
步骤3:对于那些您想要始终出现在溢出中的人,请使用DetailsPage:showAsAction="never"
你已经完成了。
溢出不是子菜单。溢出是常规操作栏的一部分,这就是您的子菜单干扰您的结果的原因。