我有3个标签作为片段的活动。我还有3个ActionBar项目。在每个选项卡上,只应显示一个项目,其他项目应在溢出菜单中。我的代码看起来像这样
private void updateMenuItemsVisibility()
{
MenuItem itemAddGate = menu.findItem(R.id.action_add_gate);
MenuItem itemAddLinking = menu.findItem(R.id.action_new_linking);
MenuItem itemNewConversation = menu.findItem(R.id.action_new_conversation);
MenuItemCompat.setShowAsAction(itemNewConversation,
MenuItemCompat.SHOW_AS_ACTION_NEVER);
MenuItemCompat.setShowAsAction(itemAddLinking, MenuItemCompat.SHOW_AS_ACTION_NEVER);
MenuItemCompat.setShowAsAction(itemAddGate, MenuItemCompat.SHOW_AS_ACTION_NEVER);
if (viewPager.getCurrentItem() == 0)
{
MenuItemCompat.setShowAsAction(itemNewConversation,
MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
}
if (viewPager.getCurrentItem() == 1)
{
MenuItemCompat.setShowAsAction(itemAddLinking, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
}
if (viewPager.getCurrentItem() == 2)
{
MenuItemCompat.setShowAsAction(itemAddGate, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
}
}
它在Android 4.x上运行...在2.1线上隐藏似乎不起作用。当我将标签更改为第二个标签时,出现第2个项目,第3个项目。切换到以前的选项卡不会隐藏项目。我正在使用ActionBarCompat。这是一个错误吗?
编辑:实际上在Android 4.1上运行CyanogenMod的三星Galaxy S(第一个)上也表现得像这样。因此,当我们有物理按钮而不是软件密钥时,它可能与情况有关。
答案 0 :(得分:1)
我不太确定,但问题可能是API< 11由于动作栏尚未实现,因此不知道SHOW_AS_ACTION_ALWAYS。
这就是为什么你必须在菜单中添加2行代码,如下所示:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/new_sms"
android:title="@string/create_sms"
android:orderInCategory="1"
android:showAsAction="always"
yourapp:showAsAction="always"
android:icon="@drawable/arrow_right" />
</menu>
行 xmlns:yourapp =“http://schemas.android.com/apk/res-auto”和 yourapp:showAsAction =“always”制作它可能总是看到图标。即使是API 7 - 10。 否则菜单项将出现在溢出菜单中。
我不确定如何以编程方式实现此功能,但您可以编写3个菜单资源,并调用onSupportInvalidateOptionsMenu()
让片段显示自己的菜单。
如果您这样做,请不要忘记在片段“setHasOptionsMenu(true)
”中致电onCreate()
。