Android 操作栏项未显示在选项菜单中
当“菜单项”中的项目已经显示在操作栏上时,我无法显示这些项目 这是我的OnCreateOptions菜单方法:Android 操作栏项未显示在选项菜单中,android,menu,android-actionbar,option,Android,Menu,Android Actionbar,Option,当“菜单项”中的项目已经显示在操作栏上时,我无法显示这些项目 这是我的OnCreateOptions菜单方法: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.opt_menu_main, menu); return super.onCreateOptionsMenu(menu); } 这是我的选择菜单主布局: <menu xmlns:an
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.opt_menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
这是我的选择菜单主布局:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_act_settings"
android:title="Settings"
android:icon="@drawable/ic_action_settings"
android:showAsAction="ifRoom"/>
</menu>
我没有使用支持库(我的目标API是17)
如果我点击按钮菜单,它总是空的,因为项目已经显示在操作栏上。
我试图添加更多的项目,但当这些项目出现在操作栏上时,它们不会显示在选项菜单中
我也尝试过使用showAsAction=“ifRoom | withText”
,但不起作用
我认为这种行为是正确的,但是否可以同时在菜单和操作栏中显示相同的项目
谢谢试试这个:
app:showAsAction="always"
但别忘了在定义的开头加上这一行:
xmlns:app="http://schemas.android.com/apk/res-auto"
菜单项的Id必须是唯一的。最好的选择是使用另一个Id创建另一个菜单项,并将其showAsAction设置为“从不”,以强制它始终进入溢出菜单。但是,如果您同时显示其他主要选项,则可能会将这两个选项强制溢出,在这种情况下,您将看到两个具有相同标题的菜单项。目前我是这样解决的:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_act_settings"
android:title="Settings"
android:icon="@drawable/ic_action_settings"
android:showAsAction="always"/>
<item
android:id="@+id/menu_settings"
android:title="Settings"
android:showAsAction="never"/>
</menu>
我认为这不是一个正确的解决方案,因为在某些设备上,没有足够的空间在ActionBar上添加此项和其他项,
由于它们被定义为showAsAction=“always”,它们将在ActionBar标题上重叠,因此可能会产生一些布局问题
我想要的行为是始终在选项菜单上显示项目,如果有足够的空间,也在操作栏中显示项目
使用showAsAction=“始终”无法获得此行为
如果有人能找到更好的解决方案,那就太好了
无论如何,谢谢。谢谢正是我所做的,我以为我已经解决了这个问题,但我注意到在另一台没有足够空间的设备上,溢出菜单中有两项,所以我问了这个问题。也许可以设置两个不同的菜单,一个用于操作栏,一个用于选项菜单?不。它们被认为是同一个菜单。谢谢,但如果我设置为“始终”,该项将不会显示在选项菜单上。我想在菜单和操作栏上显示相同的项目。不,我在菜单和操作栏上都有“刷新”按钮,带有此选项!我现在再试了一次,但使用android:showAsAction=“always”时,选项菜单中没有任何项目,它只显示在操作栏中。一周前,我尝试使用支持库(因此使用xmlns:app-tag和app:showAsAction),但得到了相同的结果,所以现在我删除了支持库。我认为我不应该使用支持库,因为我的目标API是17
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_add_schedule:
case R.id.menu_act_add_schedule:
//some code
break;
}
return true;
}