Цвет значка навигации AndroidX BottomAppBar

Я определил нижнюю панель в макете следующим образом:

<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" />

Значок навигации - это общий значок, созданный мастером "Новый вектор". Есть ли способ нанести на него оттенок?

Нижняя панель - это не панель действий.

Что я пробовал до сих пор:

  • применил тему с переопределением textColorPrimary цвет
  • применил тему с переопределением controlColorNormal цвет

Если есть решение, которое также работает с иконками, предоставленными путем загрузки меню из XML (используя inflateMenu() или `replaceMenu()), это было бы идеально.

0 ответов

Цвет значка навигации основан на colorControlNormalатрибут.
Вы можете переопределить это, используя:

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

с участием:

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

Чтобы программно изменить цвет значка навигации, вставьте в действие onCreate() этот код:

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)
   ...
}