【问题标题】:How to set different colors for bottom navigation icons/text in Android如何在Android中为底部导航图标/文本设置不同的颜色
【发布时间】:2018-04-12 16:16:10
【问题描述】:

我正在使用 Android 应用程序,在此我有底部导航活动。 底部导航包含 3 个图标主页、提醒、设置。 以及首页片段、提醒片段、设置片段3个片段。

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

我已经尝试了以下

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>

值/colors.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" />

上面的代码对我不起作用。请帮我解决这个问题。

【问题讨论】:

    标签: android android-color


    【解决方案1】:

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

    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"
        ... />
    

    【讨论】:

      【解决方案2】:

      在您的选择器中,在您的第二个项目中,尝试添加 android:state_checked="false"

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

      【讨论】:

        猜你喜欢
        • 2017-09-15
        • 2020-11-17
        • 2017-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 2017-11-27
        • 2018-09-22
        相关资源
        最近更新 更多