1

我從支持庫中使用ActionBar。我想在運行時更改一個MenuItem的可見性。在大多數情況下,這可以正常工作,但有時,隱藏功能無法按預期工作。我正在使用以下代碼來更改公開程度:SupportActionBar沒有設置可見性,因爲我想

@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,emulator api 18.並且該錯誤僅發生在模擬器API 16上。不幸的是,我沒有真正的設備API 16可用於測試。

+0

顯示菜單xml,我有一個猜測,但不能確定 –

+0

我不確定這一點,但我認爲你需要使用View.GONE,因爲我知道INVISIBLE標籤只會將對象隱藏起來,用去掉的標籤從佈局中刪除對象... – GhostDerfel

+0

@GhostDerfel'MenuItem.setVisibility()'是一個錯字,只有'MenuItem.setVisiblity(布爾可見)'方法可用。如果設置爲false,則這通常等於'View.GONE'。 – MalaKa

回答

0

我有可能在另一臺機器上設置新的仿真器。錯誤沒有發生;這個問題是由我使用的模擬器的問題引起的。不過,感謝您的回覆。

相關問題