8

I've defined a bottom bar in a layout like that:

<com.google.android.material.bottomappbar.BottomAppBar
    android:id="@+id/bottomBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    app:navigationIcon="@drawable/ic_menu_black_24dp" />

The navigation icon is a generic icon generated from the "new vector drawable" wizard. Is there a way to apply a tint to it?

The bottom bar is not the activity action bar.

What I've tried so far:

  • applied a theme with an overridden textColorPrimary color
  • applied a theme with an overridden controlColorNormal color

If there's a solution that also works on icons supplied by loading a menu from XML (using inflateMenu() or replaceMenu()), that would be perfect.

Gabriele Mariotti
  • 320,139
  • 94
  • 887
  • 841
SpaceBison
  • 2,525
  • 1
  • 21
  • 38
  • by applying tint you mean to change the color of the vector image using code or while generating the image? – Amit Jangid Feb 26 '19 at 06:56
  • [You can try this solution for changing the color of vector image.](https://stackoverflow.com/questions/35625099/how-to-change-color-of-vector-drawable-path-on-button-click/36400463) – Amit Jangid Feb 26 '19 at 06:58

2 Answers2

2

The navigation icon color is bases on colorControlNormal attribute.
You can override it using:

<com.google.android.material.bottomappbar.BottomAppBar
    android:theme="@style/ThemeOverlay.BottomAppBar"

with:

<style name="ThemeOverlay.BottomAppBar">
    <item name="colorControlNormal">@color/....</item>
</style>

enter image description here

Gabriele Mariotti
  • 320,139
  • 94
  • 887
  • 841
0

For programmatically changing color of the navigation icon insert into your activity 'onCreate()' this code:

override fun onCreate(savedInstanceState: Bundle?) {
   ...
   if (myIsLightTheme)
       bottomBar.navigationIcon?.setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_ATOP)
   else 
       bottomBar.navigationIcon?.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP)
   ...
}
Gregory
  • 802
  • 10
  • 16