android - 有没有办法为 Android 的 BottomNavigationView 的选定状态设置不同的图标/颜色?

标签 android bottomnavigationview android-bottomnav

以下是我当前的 BottomNavigationView 的 XML。目前,所有三个图标可绘制对象都是具有相同颜色的未填充图标。我希望能够在选择该状态时显示图标的填充版本,并可能更改颜色以使其明显是当前图标状态。下图是我的意思的一个例子。

Example of icon color changing for selected state

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_favorites"
        android:enabled="true"
        android:icon="@drawable/icon_flyer"
        android:title="Flyer"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/action_schedules"
        android:enabled="true"
        android:icon="@drawable/icon_list"
        android:title="List"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/action_music"
        android:enabled="true"
        android:icon="@drawable/icon_contact"
        android:title="Contact"
        app:showAsAction="ifRoom" />
</menu>

最佳答案

要按状态更改图标颜色,您可以为 BottomNavigationView 中的“itemIconTint”属性设置可绘制颜色状态。对于文本颜色,您可以在“itemTextColor”属性中设置可绘制的相同颜色状态。下面是 BottomNavigationView 的颜色状态可绘制示例:

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

“android:state_pressed”状态是菜单项的按下状态。 “android:state_checked”是菜单项的选中状态。

这只会更改 BottomNavigationView 中图标和标签的颜色。为了填充您的图标,您可以为菜单项中的“图标”属性设置一个图标状态可绘制对象。这是图标状态可绘制对象的示例:

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

关于android - 有没有办法为 Android 的 BottomNavigationView 的选定状态设置不同的图标/颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41489126/

相关文章:

android - 如何在 camera2 Android api 中创建一个 BottomBar 作为 StickyBottomCaptureLayout?

java - 软输入布局没有按预期改变

android - ClassNotFoundException : com. google.android.gms.maps.MapFragment 与 AndroidStudio

android - sqlite数据库没有得到更新

java - 选择双倍 BottomNavigation 项目时应用程序崩溃

android - 如何为BottomNavigationView 中的所有图标设置不同的颜色?

Flutter - 禁用底部导航栏动画(文本增长)

java - NavigationDrawerActivity 和 BottomNavigationActivity

java - 在 Activity 之间使用 BottomNavigationView 按下时如何突出显示项目?

Android - 使用现有数据库进行全文搜索