1. ホーム
  2. android

[解決済み] BottomNavigationView - 選択されたアイコンのハイライトを無効化する方法

2022-02-26 21:55:09

質問

bottomnavigationのビューで、チェックされているかどうかによってアイコンを設定するようにしています。

<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>

bottomnav_icon_home。

<?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>

android:state_checked が true の場合、bottomnavigation は自動的にアイコンを強調表示します。

bottomnavigationのアイコン選択ハイライトを完全に無効にするには?

を設定してみました。 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"/>

bottom_navigation_selectorを使用します。

<?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>

解決方法は?

もし私が正しく理解していれば、アンドロイドはデフォルトで選択時に下のナビゲーションアイコンに色合いを設定し、あなたはそれを取り除きたいのですね。

xmlではなくjavaクラスでそれを行う方法は知っています。

を設定する必要があります。 setItemIconTintList メソッドで BottomNavigationView から null . そのため、レイアウトを設定する箇所では、次のようにコードを記述します。

BottomNavigationView btmNav = findViewById(R.id.bottom_navigation);
btmNav.setItemIconTintList(null);

これがうまくいくかどうか教えてください。