7

我在这样的布局中定义了一个底栏:

<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()or replaceMenu())提供的图标,那将是完美的。

4

2 回答 2

2

导航图标颜色基于colorControlNormal属性。
您可以使用以下方法覆盖它:

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

和:

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

在此处输入图像描述

于 2020-07-10T22:01:33.450 回答
0

要以编程方式更改导航图标的颜色,请在您的活动“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)
   ...
}
于 2019-09-11T13:31:02.213 回答