La vue de navigation inférieure a été ajoutée à la version 25 de la bibliothèque de support de conception. J'ai essayé et c'est beaucoup plus facile à utiliser maintenant.
Mais je suis confronté à un problème de mise en œuvre conformément aux exigences de mon application. Je souhaite gonfler la ressource de menu de manière dynamique et modifier les éléments de menu/titres de la vue de navigation inférieure par programmation.
inflateMenu (int menuResource) - Gonfle un menu pour la vue de navigation inférieure à l'aide d'un identifiant de ressource de menu.
Selon les documents:
inflateMenu: void inflateMenu (int resId) Gonflez une ressource de menu dans cette vue de navigation. Les éléments existants dans le menu ne seront ni modifiés ni supprimés. Paramètres resId int: ID d'une ressource de menu à gonfler
Essayer d'utiliser cette méthode inflateMenu (int resID) par programme avec la vue de navigation lève l'exception "Ressource non trouvée"
bottomNavigationView.inflateMenu(R.menu.bottom_navigation_menu);
Est-il possible de le réaliser sans aucune bibliothèque tierce?
<?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>
Ressource de menu:
<?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>
Gonfler par programme dans menuresource pour la vue de navigation inférieure à l'intérieur de l'activité:
navBar = (BottomNavigationView) findViewById(R.id.bottom_navigation);
navBar.inflateMenu(R.menu.bottom_navigation_view);
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);
J'espère que ça aide.
navigationView.getMenu().clear(); //clear old inflated items.
navigationView.inflateMenu(R.menu.new_navigation_drawer_items);