BottomNavigationView - 如何禁用选定的图标突出显示

DIR*_*AVE 2 android android-bottomnavigationview

我有一个底部导航视图,根据状态(如果选中或未选中)设置图标。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/icon_tree"
        android:title="Tree"
        android:icon="@drawable/bottomnav_icon_home">
    </item>

</menu>
Run Code Online (Sandbox Code Playgroud)

底部导航图标主页:

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

</selector>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

当 android:state_checked 为 true 时,底部导航如何自动突出显示图标。

在此输入图像描述

如何完全禁用底部导航的图标选择突出显示?

我尝试过设置app:itemIconTint="@drawable/bottom_navigation_selector"但是@null不起作用

<com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/bottom_navigation"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:menu="@menu/bottom_navigation_menu"
            android:background="@color/colorWhite"
            app:itemTextColor="@drawable/bottom_navigation_selector"
            app:itemIconSize="28dp"
            app:itemIconTint="@drawable/bottom_navigation_selector"
            app:labelVisibilityMode="labeled"/>
Run Code Online (Sandbox Code Playgroud)

底部导航选择器:

<?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/forestGreen" />
    <item android:color="@color/colorBlack" />
</selector>
Run Code Online (Sandbox Code Playgroud)

ljk*_*ljk 9

如果我理解正确的话,Android 默认情况下会在选择时在底部导航图标上设置色调,并且您希望将其删除。

我知道如何在你的java类而不是xml中做到这一点。

您需要将setItemIconTintList方法设置BottomNavigationViewnull。因此,无论您在何处设置布局,都应将代码编写为:

BottomNavigationView btmNav = findViewById(R.id.bottom_navigation);
btmNav.setItemIconTintList(null);
Run Code Online (Sandbox Code Playgroud)

让我们知道这是否适合您。