AndroidX BottomAppBar导航图标颜色

时间:2018-10-04 11:28:28

标签: android material-design androidx android-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())提供的图标,那将是完美的。

2 个答案:

答案 0 :(得分:1)

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

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

具有:

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

enter image description here

答案 1 :(得分: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)
   ...
}