SupportActionBar没有设置我想要的可见性

时间:2014-01-06 16:14:22

标签: android android-support-library android-actionbar-compat

我正在使用支持库中的ActionBar。我想在运行时更改一个MenuItem的可见性。在大多数情况下,这样可以正常工作,但有时隐藏不能按预期工作。我使用以下代码来更改可见性:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {

    boolean show = /* some condition */
    myMenuItem.setVisible(show); // I got myMenuItem from onCreateOptionsMenu()
    return superRetVal;
}

正如我所说,这适用于大多数情况。但是,如果我创建FragmentTransaction然后调用invalidateOptionsMenu(),它有时会出错。错误是图标本身被隐藏,因为show == false,但空间仍然被阻止(就像设置View.setVisibility(View.INVISIBLE)时一样)。在下面的屏幕显示中,您可能会看到空间仍然被阻止。我用红色框突出显示了未使用但被阻止的空间。发生此错误一次之后,我只能通过单击溢出菜单来摆脱它。在那之前,没有MenuItem.setVisible()会产生任何影响。

ActionBar

这里有什么问题?
谢谢!

修改
项目menu_to_current导致问题:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:malaka="http://schemas.android.com/apk/res-auto" >

<item 
    android:id="@+id/menu_to_current"
    android:orderInCategory="100"
    android:title="To Current"
    android:icon="@drawable/ic_menu_current"
    malaka:showAsAction="always"
    android:visible="false"/>

<item 
    android:id="@+id/menu_show_buttons"
    android:orderInCategory="100"
    android:title="Show Buttons"
    malaka:showAsAction="never"/>

<item  
    android:id="@+id/menu_settings"
    android:orderInCategory="100"
    android:title="Settings"
    android:icon="@android:drawable/ic_menu_preferences"
    malaka:showAsAction="never"/>

</menu>

EDIT2
我正在测试模拟器api 16.我现在另外在真实设备api 10,真实设备api 18,模拟器api 18上进行了测试。而且错误只发生在模拟器api 16.不幸的是我没有真正的设备api 16可用于测试一下。

1 个答案:

答案 0 :(得分:0)

我有可能在另一台机器上设置新的模拟器。错误没有发生;这个问题是由我使用的模拟器的问题引起的。谢谢你的回复。