BottomNavigationView

public class BottomNavigationView
extends FrameLayout

java.lang.Object
   ↳ FrameLayout
     ↳ 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. They should be used when an application has three to five top-level destinations.

The bar can disappear on scroll, based on HideBottomViewOnScrollBehavior, when it is placed within a CoordinatorLayout and one of the children within the CoordinatorLayout is scrolled. This behavior is only set if the layout_behavior property is set to HideBottomViewOnScrollBehavior.

The bar contents can be populated by specifying a menu resource file. Each menu item title, icon and enabled state will be used for displaying bottom navigation bar items. Menu items can also be used for programmatically selecting which destination is currently active. It can be done using MenuItem#setChecked(true)

 layout resource file:
 <com.google.android.material.bottomnavigation.BottomNavigationView
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schema.android.com/apk/res/res-auto"
     android:id="@+id/navigation"
     android:layout_width="match_parent"
     android:layout_height="56dp"
     android:layout_gravity="start"
     app:menu="@menu/my_navigation_items" />

 res/menu/my_navigation_items.xml:
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:id="@+id/action_search"
          android:title="@string/menu_search"
          android:icon="@drawable/ic_search" />
     <item android:id="@+id/action_settings"
          android:title="@string/menu_settings"
          android:icon="@drawable/ic_add" />
     <item android:id="@+id/action_navigation"
          android:title="@string/menu_navigation"
          android:icon="@drawable/ic_action_navigation_menu" />
 </menu>
 

Summary

Nested classes

interface BottomNavigationView.OnNavigationItemReselectedListener

Listener for handling reselection events on bottom navigation items. 

interface BottomNavigationView.OnNavigationItemSelectedListener

Listener for handling selection events on bottom navigation items. 

Public constructors

BottomNavigationView(Context context)
BottomNavigationView(Context context, AttributeSet attrs)
BottomNavigationView(Context context, AttributeSet attrs, int defStyleAttr)

Public methods

int getItemBackgroundResource()

Returns the background resource of the menu items.

boolean getItemHorizontalTranslation()

Returns whether the items horizontally translate on selection when the item widths fill up the screen.

int getItemIconSize()

Returns the size provided for the menu item icons in dp.

ColorStateList getItemIconTintList()

Returns the tint which is applied to our menu items' icons.

int getItemTextAppearanceActive()

Returns the text appearance used for the active menu item label.

int getItemTextAppearanceInactive()

Returns the text appearance used for inactive menu item labels.

ColorStateList getItemTextColor()

Returns colors used for the different states (normal, selected, focused, etc.) of the menu item text.

int getLabelVisibilityMode()

Returns the current label visibility mode used by this BottomNavigationView.

int getMaxItemCount()
Menu getMenu()

Returns the ERROR(/Menu) instance associated with this bottom navigation bar.

int getSelectedItemId()

Returns the currently selected menu item ID, or zero if there is no menu.

void inflateMenu(int resId)

Inflate a menu resource into this navigation view.

void setItemBackgroundResource(int resId)

Set the background of our menu items to the given resource.

void setItemHorizontalTranslation(int itemHorizontalTranslation)

Sets whether the menu items horizontally translate on selection when the combined item widths fill up the screen.

void setItemHorizontalTranslation(boolean itemHorizontalTranslation)

Sets whether the menu items horizontally translate on selection when the combined item widths fill up the screen.

void setItemIconSize(int iconSize)

Set the size to provide for the menu item icons.

void setItemIconSizeRes(int iconSizeRes)

Set the size to provide for the menu item icons using a resource ID.

void setItemIconTintList(ColorStateList tint)

Set the tint which is applied to our menu items' icons.

void setItemTextAppearanceActive(int textAppearanceRes)

Sets the text appearance to be used for the menu item labels.

void setItemTextAppearanceInactive(int textAppearanceRes)

Sets the text appearance to be used for inactive menu item labels.

void setItemTextColor(ColorStateList textColor)

Set the colors to use for the different states (normal, selected, focused, etc.) of the menu item text.

void setLabelVisibilityMode(int labelVisibilityMode)

Sets the navigation items' label visibility mode.

void setLabelVisibilityModeResource(int labelVisibilityModeId)

Sets the navigation items' label visibility mode using a resource ID.

void setOnNavigationItemReselectedListener(BottomNavigationView.OnNavigationItemReselectedListener listener)

Set a listener that will be notified when the currently selected bottom navigation item is reselected.

void setOnNavigationItemSelectedListener(BottomNavigationView.OnNavigationItemSelectedListener listener)

Set a listener that will be notified when a bottom navigation item is selected.

void setSelectedItemId(int itemId)

Set the selected menu item ID.

Protected methods

void onRestoreInstanceState(Parcelable state)
Parcelable onSaveInstanceState()

Inherited methods

From class java.lang.Object

Public constructors

BottomNavigationView

BottomNavigationView (Context context)

Parameters
context Context

BottomNavigationView

BottomNavigationView (Context context, 
                AttributeSet attrs)

Parameters
context Context

attrs AttributeSet

BottomNavigationView

BottomNavigationView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context

attrs AttributeSet

defStyleAttr int

Public methods

getItemBackgroundResource

int getItemBackgroundResource ()

Returns the background resource of the menu items.

Returns
int

getItemHorizontalTranslation

boolean getItemHorizontalTranslation ()

Returns whether the items horizontally translate on selection when the item widths fill up the screen.

Returns
boolean whether the menu items horizontally translate on selection

getItemIconSize

int getItemIconSize ()

Returns the size provided for the menu item icons in dp.

Returns
int

getItemIconTintList

ColorStateList getItemIconTintList ()

Returns the tint which is applied to our menu items' icons.

Returns
ColorStateList

getItemTextAppearanceActive

int getItemTextAppearanceActive ()

Returns the text appearance used for the active menu item label.

Returns
int the text appearance ID used for the active menu item label

getItemTextAppearanceInactive

int getItemTextAppearanceInactive ()

Returns the text appearance used for inactive menu item labels.

Returns
int the text appearance ID used for inactive menu item labels

getItemTextColor

ColorStateList getItemTextColor ()

Returns colors used for the different states (normal, selected, focused, etc.) of the menu item text.

Returns
ColorStateList the ColorStateList of colors used for the different states of the menu items text.

getLabelVisibilityMode

int getLabelVisibilityMode ()

Returns the current label visibility mode used by this BottomNavigationView.

Returns
int

getMaxItemCount

int getMaxItemCount ()

Returns
int The maximum number of items that can be shown in BottomNavigationView.

getMenu

Menu getMenu ()

Returns the ERROR(/Menu) instance associated with this bottom navigation bar.

Returns
Menu

getSelectedItemId

int getSelectedItemId ()

Returns the currently selected menu item ID, or zero if there is no menu.

Returns
int

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

setItemBackgroundResource

void setItemBackgroundResource (int resId)

Set the background of our menu items to the given resource.

Parameters
resId int: The identifier of the resource.

setItemHorizontalTranslation

void setItemHorizontalTranslation (int itemHorizontalTranslation)

Sets whether the menu items horizontally translate on selection when the combined item widths fill up the screen.

Parameters
itemHorizontalTranslation int: whether the items horizontally translate on selection

setItemHorizontalTranslation

void setItemHorizontalTranslation (boolean itemHorizontalTranslation)

Sets whether the menu items horizontally translate on selection when the combined item widths fill up the screen.

Parameters
itemHorizontalTranslation boolean: whether the items horizontally translate on selection

setItemIconSize

void setItemIconSize (int iconSize)

Set the size to provide for the menu item icons.

For best image resolution, use an icon with the same size set in this method.

Parameters
iconSize int: the size in dp to provide for the menu item icons

setItemIconSizeRes

void setItemIconSizeRes (int iconSizeRes)

Set the size to provide for the menu item icons using a resource ID.

For best image resolution, use an icon with the same size set in this method.

Parameters
iconSizeRes int: the resource ID for the size to provide for the menu item icons

setItemIconTintList

void setItemIconTintList (ColorStateList tint)

Set the tint which is applied to our menu items' icons.

Parameters
tint ColorStateList: the tint to apply.

setItemTextAppearanceActive

void setItemTextAppearanceActive (int textAppearanceRes)

Sets the text appearance to be used for the menu item labels.

Parameters
textAppearanceRes int: the text appearance ID used for menu item labels

setItemTextAppearanceInactive

void setItemTextAppearanceInactive (int textAppearanceRes)

Sets the text appearance to be used for inactive menu item labels.

Parameters
textAppearanceRes int: the text appearance ID used for inactive menu item labels

setItemTextColor

void setItemTextColor (ColorStateList textColor)

Set the colors to use for the different states (normal, selected, focused, etc.) of the menu item text.

Parameters
textColor ColorStateList

See also:

setLabelVisibilityMode

void setLabelVisibilityMode (int labelVisibilityMode)

Sets the navigation items' label visibility mode.

The label is either always shown, never shown, or only shown when activated. Also supports "auto" mode, which uses the item count to determine whether to show or hide the label.

Parameters
labelVisibilityMode int: mode which decides whether or not the label should be shown. Can be one of LABEL_VISIBILITY_AUTO, LABEL_VISIBILITY_SELECTED, LABEL_VISIBILITY_LABELED, or LABEL_VISIBILITY_UNLABELED

setLabelVisibilityModeResource

void setLabelVisibilityModeResource (int labelVisibilityModeId)

Sets the navigation items' label visibility mode using a resource ID.

The label is either always shown, never shown, or only shown when activated. Also supports "auto" mode, which uses the item count to determine whether to show or hide the label.

Parameters
labelVisibilityModeId int: mode which decides whether or not the label should be shown. Can be one of LABEL_VISIBILITY_AUTO, LABEL_VISIBILITY_SELECTED, LABEL_VISIBILITY_LABELED, or LABEL_VISIBILITY_UNLABELED

setOnNavigationItemReselectedListener

void setOnNavigationItemReselectedListener (BottomNavigationView.OnNavigationItemReselectedListener listener)

Set a listener that will be notified when the currently selected bottom navigation item is reselected. This does not require an BottomNavigationView.OnNavigationItemSelectedListener to be set.

Parameters
listener BottomNavigationView.OnNavigationItemReselectedListener: The listener to notify

setOnNavigationItemSelectedListener

void setOnNavigationItemSelectedListener (BottomNavigationView.OnNavigationItemSelectedListener listener)

Set a listener that will be notified when a bottom navigation item is selected. This listener will also be notified when the currently selected item is reselected, unless an BottomNavigationView.OnNavigationItemReselectedListener has also been set.

Parameters
listener BottomNavigationView.OnNavigationItemSelectedListener: The listener to notify

setSelectedItemId

void setSelectedItemId (int itemId)

Set the selected menu item ID. This behaves the same as tapping on an item.

Parameters
itemId int: The menu item ID. If no item has this ID, the current selection is unchanged.

Protected methods

onRestoreInstanceState

void onRestoreInstanceState (Parcelable state)

Parameters
state Parcelable

onSaveInstanceState

Parcelable onSaveInstanceState ()

Returns
Parcelable