AndroidX底部应用栏导航图标颜色

8
我已经在一个布局中定义了一个底部栏,像这样:

<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()),那就太完美了。

通过应用色彩滤镜,您是指在使用代码或生成图像时更改矢量图像的颜色吗? - Amit Jangid
你可以尝试这个解决方案来改变矢量图像的颜色。 (https://dev59.com/x1sV5IYBdhLWcg3w6ych#36400463) - Amit Jangid
2个回答

2
导航图标的颜色基于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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接