2016-09-15 76 views
1

我在NavigationView中有一個菜單,其中有7個菜單項,其中一些菜單項應該根據用戶設置隱身,剩下的可見項應以不同的順序顯示。這些項目已經在XML菜單佈局中定義。如何在代碼中更改NavigationView菜單中MenuItems的順序?

我已經GOOGLE了很多,但沒有任何關係到已定義的菜單項。大多數解決方案都建議在代碼中創建菜單項並在創建菜單時設置順序。

這裏是我的菜單項XML佈局:

<group android:checkableBehavior="single"> 
    <item 
     android:id="@+id/Home_menuitem" 
     android:title="Home" /> 
    <item 
     android:id="@+id/Register_menuitem" 
     android:title="Register" /> 
    <item 
     android:id="@+id/Login_menuitem" 
     android:title="Login" /> 
    <item 
     android:id="@+id/language_menuitem" 
     android:title="Language" /> 
    <item 
     android:id="@+id/ContactUs_menuitem" 
     android:title="Contact Us" /> 
    <item 
     android:id="@+id/Likes_menuitem" 
     android:title="Likes" /> 
    <item 
     android:id="@+id/Subscription_menuitem" 
     android:title="Subscription" /> 
    <item 
     android:id="@+id/Logout_menuitem" 
     android:title="Logout" /> 
</group> 

說我要改變代碼順序(不是XML),使 「Likes_menuitem」 被上面顯示「Home_menuitem」

回答

0

我沒有嘗試,但您可能可以按照下列步驟操作。

  1. 獲取到菜單第一

    navigationView.getMenu()

  2. 參考添加或刪除特定項目(從)它不同的順序來實現你的爲了。在docs

    add(int groupId, int itemId, int order, CharSequence title)

    removeItem(int id)

更多信息!

+0

正如你所看到的Add方法將創建新的菜單項!它不使用MenuItem你已經在XML中...我正在尋找一個簡單的方法來做到這一點,就像add(MenuItem,Order) –

+0

你可以用'findItem(int id) '但返回的'MenuItem'沒有像'setOrder(int order)'這樣的方法。所以也許這是做到這一點的唯一方法。不復雜,你至少嘗試過嗎? – cylon

+0

我知道這並不複雜,但我正在尋找一種合適的方式來做到這一點!無論如何,我會立即檢查並回饋。 –

0

您可以通過可見的菜單項來設置true或false。

+0

您無法通過更改物品的可見性來更改訂單...問題非常明確!它是關於更改菜單中項目的順序 –

相關問題