2016-09-15 3 views
1

Ich habe ein Menü in NavigationView, die 7 Menüpunkte haben, einige dieser Menüpunkte sollten basierend auf Benutzereinstellungen unsichtbar sein und die verbleibenden sichtbaren Elemente sollten in anderer Reihenfolge angezeigt werden. Die Elemente sind bereits im XML-Menülayout definiert.Wie ändert man die Reihenfolge der MenuItems im Menü der NavigationView im Code?

Ich habe viel gegooglet, aber nichts zu bereits definierten Menüpunkten. Bei den meisten Lösungen wurde vorgeschlagen, die Menüelemente im Code zu erstellen und die Reihenfolge beim Erstellen festzulegen.

hier ist mein Menüpunkt XML-Layout:

<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> 

sagt, dass ich den Auftrag in-Code (NICHT im XML) ändern will "Likes_menuitem" zu machen, oben angezeigt werden "Home_menuitem"

Antwort

0

Ich habe es nicht versucht, aber Sie können wahrscheinlich diese Schritte folgen.

  1. einen Verweis auf das

    erste Menü Get

    navigationView.getMenu()

  2. hinzufügen oder bestimmte Elemente (von) mit anderer Reihenfolge entfernt Ihre um zu erreichen.

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

    removeItem(int id)

Weitere Informationen im docs!

+0

Wie Sie sehen können, wird die Add-Methode einen neuen Menüpunkt erstellen! es verwendet nicht das MenuItem, das Sie bereits im XML haben ... Ich suche nach einem einfachen Weg, es genau wie add (MenuItem, Order) zu machen –

+0

Sie können das existierende Element mit 'findItem (int id) erhalten 'aber das zurückgegebene' MenuItem' hat keine Methode wie 'setOrder (int order)'. Vielleicht ist dies der einzige Weg, dies zu tun. Ist das nicht kompliziert, hast du es wenigstens versucht? – cylon

+0

Ich weiß, es ist nicht kompliziert, aber ich war auf der Suche nach einem richtigen Weg, es zu tun! Trotzdem werde ich es gleich überprüfen und mit Feedback zurückkommen. –

0

Sie können dies durch sichtbares Menüelement auf True oder False tun.

+0

Sie können die Reihenfolge nicht ändern, indem Sie die Sichtbarkeit des Artikels ändern ... die Frage ist sehr klar! Es geht darum, die Reihenfolge des Elements im Menü zu ändern –

Verwandte Themen