android - 如何在 Android 中为底部导航图标/文本设置不同的颜色

标签 android android-color

我在 Android 应用程序中工作,在此我有底部导航 Activity 。 底部导航包含 3 个图标主页、提醒、设置。 以及 3 个 fragment ,如主页 fragment 、提醒 fragment 、设置 fragment 。

我需要做的是默认情况下,当我打开应用程序时,我想为主页图标和文本设置颜色(所选项目的图标颜色和文本颜色应该不同),如果我从底部导航中选择了其他选项卡我想更改所选选项卡的颜色。

我试过以下方法

res/color/bnv_tab_item_foreground.xml

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

值/颜色.xml

<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
    <color name="selected">#25EB13</color>
    <color name="not_selected">#EB1347</color>

</resources>

activity_main.xml

 <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="0dp"
        android:layout_marginStart="0dp"
        android:background="?android:attr/windowBackground"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/navigation"
        app:itemIconTint="@color/bnv_tab_item_foreground"
        app:itemTextColor="@color/bnv_tab_item_foreground" />

上面的代码不适合我。请帮我解决这个问题。

最佳答案

很简单!您可以制作可绘制对象和颜色选择器。看看如何:

1 : 制作绘图选择器

res/drawable/drawable_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/colorAccent" android:state_checked="true" /> // you can take drawable too. 
    <item android:drawable="@color/colorAccentDark" />
</selector>

2。制作颜色选择器

res/color/color_selector.xml

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

现在在 XML 中使用两个选择器。

<android.support.design.widget.BottomNavigationView
    ...
    app:itemBackground="@drawable/drawable_selector" // set background
    app:itemIconTint="@color/color_selector" // set icon tint/color
    app:itemTextColor="@color/color_selector" // set text color
    app:menu="@menu/home_bottom_menu"
    ... />

关于android - 如何在 Android 中为底部导航图标/文本设置不同的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49801423/

相关文章:

android - 响应式 CSS 无法正常工作

android - APK内相同路径的重复文件

android - 为 PocketSphinxAndroidDemo 设置 SWIG Builder 时得到 "Error running Integrated External Tool Builder"

android - 检测背景壁纸是否太亮或太暗

Android,滤色器仅在预览中有效

Android 在某些设备上呈现蓝色阴影错误

android - 想要在游戏结束后在“我的游戏”中显示 AdMob Interstitial 广告

android - 视差背景和引擎

Android更改默认 "Paste"edittext的弹出文本颜色

android - 如何动态更改可绘制 <shape> 的颜色? (安卓)