无法更改底部导航图标色调

问题描述 投票:0回答:1

我正在尝试对底部导航实施图标色调,但由于某种原因似乎不起作用,

我添加了硬编码的

#color
代码,并将其添加到
colors.xml
中,并为该实例制作了
selector
,它们都不起作用,但如果我检查底部导航的
text color
,那么它的集合到需要的颜色

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:layout_margin="20dp"
    android:layout_marginEnd="30dp"
    android:background="@drawable/border">

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottomNavigationView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bottom_navigation_style"
        app:itemIconSize="30dp"
        app:itemIconTint="@color/buttonBorder"
        app:itemTextColor="@color/buttonBorder"
        app:labelVisibilityMode="labeled"
        app:menu="@menu/bottom_nav_menu" />

</RelativeLayout>

这是颜色.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
    <color name="buttonColor">#FFFDF6</color>
    <color name="buttonBorder">#100F15</color>
</resources>

颜色选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item  android:state_checked="true" android:color="@color/buttonBorder" />
    <item android:state_checked="false" android:color="@color/buttonBorder"  />
</selector>

菜单图标切换之一的选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/outline_dashboard_24" android:state_checked="false" />
    <item android:drawable="@drawable/baseline_dashboard_24" android:state_checked="true" />

</selector>

最后是菜单本身

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/dashboard"
        android:icon="@drawable/selector_main"
        android:title="Buttons" />
    <item
        android:id="@+id/add_icon"
        android:icon="@drawable/selector_requestbtn"
        android:title="Request Button" />
    <item
        android:id="@+id/favourite_icon"
        android:icon="@drawable/selector_favourite"
        android:title="Favourite" />


</menu>

我想也许我不需要图标颜色色调的选择器,因为我有

selector
用于图标本身,用于将图标从填充切换到轮廓,颜色与我上面提到的相同,但这似乎不是工作这就是我也尝试过的原因
icontint
但似乎对我不起作用

java android xml android-layout bottomnavigationview
1个回答
0
投票

在颜色选择器文件中,您为选中和未选中状态定义了相同的颜色(@color/buttonBorder)。这意味着当图标的状态改变时,图标的颜色不会改变。如果您想为不同的状态使用不同的颜色,您应该在颜色选择器文件中为每个状态指定不同的颜色。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/colorWhenChecked" />
<item android:state_checked="false" android:color="@color/colorWhenUnchecked" />
</selector>

如果您仍然遇到问题,检查主题中是否有任何可能影响 BottomNavigationView 的覆盖样式可能会有所帮助

在这行代码中,将 yourColor 替换为您要使用的实际颜色值。

bottomNavigationView.setItemIconTintList(ColorStateList.valueOf(yourColor));
© www.soinside.com 2019 - 2024. All rights reserved.