Android 更改底部导航栏项的颜色

Android 更改底部导航栏项的颜色,android,colors,bottomnavigationview,Android,Colors,Bottomnavigationview,我将原色设置为某种类型的橙色,我不明白为什么默认情况下我的底部导航栏将白色而非原色作为所选项目的颜色,如何解决 底部导航栏的xml代码 <android.support.design.widget.BottomNavigationView android:id="@+id/bottom_navigation" android:layout_width="match_parent" android

我将原色设置为某种类型的橙色,我不明白为什么默认情况下我的底部导航栏将白色而非原色作为所选项目的颜色,如何解决

底部导航栏的xml代码

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="0dp"
        android:layout_marginLeft="0dp"
        android:layout_marginEnd="0dp"
        android:layout_marginRight="0dp"
        android:layout_marginBottom="0dp"
        android:background="@color/colorAccent"
        app:menu="@menu/bottom_navigation"/>

添加以下三个标记,以控制
选项卡的颜色以及
底部导航视图中选项卡中显示的文本

<com.google.android.material.bottomnavigation.BottomNavigationView
    style="@style/Widget.MaterialComponents.BottomNavigationView.Colored"
    android:id="@+id/navigation"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:layout_gravity="bottom"
    android:background="@android:color/white"
    app:itemIconTint="@android:color/holo_orange_dark"
    app:itemTextColor="@android:color/holo_orange_dark"
    app:menu="@menu/menu_main" />

看起来是这样的


不幸的是,我本来可以创建Drawable来处理不同的状态,但是ItemIContit只将颜色作为输入,而不可绘制。仍然非常接近您想要实现的目标。

步骤1在drawable文件夹下创建drawable文件,并添加以下代码

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#82C341" android:state_checked="true" />
<item android:color="#a9a9a9" android:state_checked="false"/>
</selector>

第2步然后像这样使用这个可绘制文件。 添加这两行。 app:itemIconTint=“@drawable/your\u drawable\u file\u name” app:itemTextColor=“@drawable/your\u drawable\u file\u name”

完整代码

<android.support.design.widget.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    app:itemBackground="@color/tab_bg"
    android:layout_gravity="start"
    android:padding="0dp"
    android:focusable="false"
    app:itemIconTint="@drawable/your_drawable_file_name"
    app:itemTextColor="@drawable/bottom_navigation_color_selector"
    app:menu="@menu/menu_bottom_navigation"
    app:labelVisibilityMode="labeled" />


什么是选择器?此外,这也不起作用,我希望在未选择项目时使用黑色(如屏幕截图上的一个),在选择项目时使用原色(橙色),而不是白色。我将在我的末端进行检查,并添加代码,就像hourI编辑我的答案一样,在我的末端有效。您只需要根据需要更改颜色值。我特意保留了这些值,以便您知道每个值的作用,如果对您有效,请不要忘记向上投票并接受。我只希望所选项目为橙色,而不是白色。我想实现的是,在另一个应用程序中,在不同颜色之间更改原色并编写我在帖子中编写的代码就足够了,现在我不明白为什么选择的项目是白色而不是橙色(在本例中,我使用主重音放置背景,以便所选项目不会与背景的白色混淆)我编辑了我的答案,并将结果与您想要的结果非常接近
<android.support.design.widget.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    app:itemBackground="@color/tab_bg"
    android:layout_gravity="start"
    android:padding="0dp"
    android:focusable="false"
    app:itemIconTint="@drawable/your_drawable_file_name"
    app:itemTextColor="@drawable/bottom_navigation_color_selector"
    app:menu="@menu/menu_bottom_navigation"
    app:labelVisibilityMode="labeled" />