Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Inflate Bottom Navigation View menu programmatically

Tags:

Bottom Navigation View has been added to version 25 of the Design Support Library. Tried and it's much easier to use now.

But I am facing problem implementing it as per my app requirements. I want to inflate menu resource dynamically and change menu items/titles of the Bottom Navigation view programmatically.

inflateMenu(int menuResource) — Inflate a menu for the bottom navigation view using a menu resource identifier.

According to docs:

inflateMenu: void inflateMenu (int resId) Inflate a menu resource into this navigation view. Existing items in the menu will not be modified or removed. Parameters resId int: ID of a menu resource to inflate

Trying to use this inflateMenu(int resID) method programmatically with navigation view throws exception "Resource not found"

bottomNavigationView.inflateMenu(R.menu.bottom_navigation_menu); 

Is it possible to achieve it without any third party libraries?

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

Menu Resource:

 <?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 for Bottom Navigation view inside Activity:

navBar = (BottomNavigationView) findViewById(R.id.bottom_navigation);     navBar.inflateMenu(R.menu.bottom_navigation_view); 
like image 259
Priya Mall Avatar asked Mar 29 '17 04:03

Priya Mall


People also ask

What is BottomNavigationView?

com.google.android.material.bottomnavigation.BottomNavigationView. Represents a standard bottom navigation bar for application. It is an implementation of material design bottom navigation. Bottom navigation bars make it easy for users to explore and switch between top-level views in a single tap.

How to use BottomNavigationView Android?

BottomNavigationView makes it easy for users to explore and switch between top-level views with a single tap. There should be a minimum of 3 top-level views and a maximum of 5. If Destinations are more than 5 then use the Navigation Drawer. When the user taps on the icon it will change the top-level view accordingly.


1 Answers

navigationView.getMenu().clear(); //clear old inflated items. navigationView.inflateMenu(R.menu.new_navigation_drawer_items); 

from this answer

like image 99
tabebqena Avatar answered Sep 27 '22 19:09

tabebqena