2

Die untere Navigationsansicht wurde der Version 25 der Design Support Library hinzugefügt. Versucht und es ist jetzt viel einfacher zu benutzen.Aufpumpen von unten Navigation Menü Ansicht programmgesteuert

Aber ich habe Probleme mit der Umsetzung es nach meinen App-Anforderungen. Ich möchte Menü-Ressource dynamisch aufblasen und Menüelemente/Titel der Bottom Navigation-Ansicht programmgesteuert ändern.

inflatemenMenu (int menuResource) - Füllen Sie ein Menü für die untere Navigationsansicht mit einer Menüressourcen-ID auf.

Nach docs:

inflateMenu: void inflateMenu (int RESID) aufpumpen eine Menüressource in diese Navigationsansicht. Vorhandene Elemente im Menü werden nicht geändert oder entfernt. Parameter Resid int: ID eines Menüressource aufzublasen

versucht, dieses inflateMenu (int ResID) Methode mit Navigationsansicht programmatisch zu verwenden, wirft Ausnahme "Ressource nicht gefunden"

bottomNavigationView.inflateMenu(R.menu.bottom_navigation_menu); 

Ist es möglich, es ohne Bibliotheken von Drittanbietern zu erreichen?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <FrameLayout 
     android:id="@+id/main_fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_above="@+id/bottom_navigation" /> 

    <android.support.design.widget.BottomNavigationView 
     android:id="@+id/bottom_navigation" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     app:itemBackground="@color/theme_action_bar_bg" 
     app:itemIconTint="@color/white" 
     app:itemTextColor="@color/white" /> 
</RelativeLayout> 

Menü Ressource:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/nav_bar_item_dashboard" 
     android:enabled="true" 
     android:icon="@drawable/ic_nav_bar_dashboard_24px" 
     android:title="@string/nav_bar_item_dashboard" 
     app:showAsAction="ifRoom" /> 
    <item 
     android:id="@+id/nav_bar_item_people" 
     android:enabled="true" 
     android:icon="@drawable/ic_nav_bar_people_24px" 
     android:title="@string/nav_bar_item_people" 
     app:showAsAction="ifRoom" /> 
    <item 
     android:id="@+id/nav_bar_item_classroom" 
     android:enabled="true" 
     android:icon="@drawable/ic_nav_bar_classroom_24px" 
     android:title="@string/nav_bar_item_classrooms" 
     app:showAsAction="ifRoom" /> 

    <item 
     android:id="@+id/nav_bar_item_manage" 
     android:enabled="true" 
     android:icon="@drawable/ic_nav_bar_manage_24px" 
     android:title="@string/nav_bar_item_manage" 
     app:showAsAction="ifRoom" /> 

    <item 
     android:id="@+id/nav_bar_item_more" 
     android:enabled="true" 
     android:icon="@drawable/ic_nav_bar_more_24px" 
     android:title="@string/nav_bar_item_more" 
     app:showAsAction="ifRoom" /> 
</menu> 

Inflating Programmatically in menuresource für Bottom Navigation Blick ins Innere Aktivität:

+0

Post Ihren Code und Layout –

Antwort

5
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); 

//Add MenuItem with icon to Menu 
navigation.getMenu().add(Menu.NONE, 1, Menu.NONE, "Home").setIcon(R.drawable.ic_home_black_24dp); 

Hoffe, es hilft.

+0

Wir können Menü löschen, bevor Sie neue Elemente hinzufügen, indem Sie navigation.getMenu() verwenden. Clear(); –