Customize UI of Android BottomNavigationView

Icon Show Original Multi Color (Disable Tint)

By default, BottomNavigationView apply tint to icon which change its original color (if the icon is multi color, it will be shown as single color).

To disable this behaviour

bottomNavigationView.itemIconTintList = null

NOTE: It seems impossible to do this via XML.

Change Icon and Selected Icon

Navigation Item (including text and icon) is specified in a menu file.

<com.google.android.material.bottomnavigation.BottomNavigationView
        ...
        app:menu="@menu/navigation"
        />

Edit res/menu/navigation.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_dailyquote"
        android:icon="@drawable/yy_dailyquote"
        android:title="@string/navigation_dailyquote"/>

        ...
</menu>

To support both icon and selected icon, create res/drawable/yy_dailyquote.xml.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/yy_dailyquote_sun" android:state_checked="false"/>
    <item android:drawable="@drawable/yy_dailyquote_sun_active" android:state_checked="true"/>
</selector>

NOTE: yy_dailyquote_sun and yy_dailyquote_sun_active are SVG or PNG icon.

Change Icon Size

<com.google.android.material.bottomnavigation.BottomNavigationView
        ...
        app:itemIconSize="30dp"
        />

NOTE: Default icon size is 24dp.

Edit res/values/dimens.xml to avoid icon overlap with text.

<resources xmlns:tools="http://schemas.android.com/tools">
    ...

    <dimen name="design_bottom_navigation_height" tools:override="true">60dp</dimen>
</resources>

NOTE: Default is 56dp.

TextColor and selected TextColor

Change TextColor

<com.google.android.material.bottomnavigation.BottomNavigationView
        ...
        app:itemTextColor="#998971"
        />

Support TextColor and Selected TextColor

<com.google.android.material.bottomnavigation.BottomNavigationView
        ...
        app:itemTextColor="@color/navigation_text_color"
        />

Create res/color/navigation_text_color.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="#9A8971" />
    <item android:state_checked="false" android:color="#AD9F88"/>
</selector>

Change Background Color

<com.google.android.material.bottomnavigation.BottomNavigationView
        ...
        android:background="#FDFAE6"
        />

❤️ Is this article helpful?

Buy me a coffee ☕ or support my work via PayPal to keep this space 🖖 and ad-free.

Do send some 💖 to @d_luaz or share this article.

✨ By Desmond Lua

A dream boy who enjoys making apps, travelling and making youtube videos. Follow me on @d_luaz

👶 Apps I built

Travelopy - discover travel places in Malaysia, Singapore, Taiwan, Japan.