1. ホーム
  2. android

[解決済み] ボトムナビゲーションビューで選択されたタブの色

2022-04-21 01:58:42

質問

を追加しています。 BottomNavigationView で、選択されたタブのテキスト(およびアイコンの色合い)の色を変えたいと思います(選択されていないタブを灰色にする効果を得るため)。異なる色を android:state_selected="true" をカラーセレクターリソースファイルの中に入れても、うまくいかないようです。また、追加のアイテム・エントリーを android:state_focused="true" または android:state_enabled="true" が、残念ながら効果はありません。また state_selected 属性に false を指定して、デフォルト(非選択)の色を指定しても、うまくいきません。

以下は、レイアウトにビューを追加する方法です。

<android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/silver"
        app:itemIconTint="@color/bnv_tab_item_foreground"
        app:itemTextColor="@color/bnv_tab_item_foreground"
        app:menu="@menu/bottom_nav_bar_menu" />

以下は、私のカラーセレクタ( bnv_tab_item_foreground.xml ):

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

そして、私のメニューリソース( bottom_nav_bar_menu.xml ):

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/action_home"
        android:icon="@drawable/ic_local_taxi_black_24dp"
        android:title="@string/home" />
    <item
        android:id="@+id/action_rides"
        android:icon="@drawable/ic_local_airport_black_24dp"
        android:title="@string/rides"/>
    <item
        android:id="@+id/action_cafes"
        android:icon="@drawable/ic_local_cafe_black_24dp"
        android:title="@string/cafes"/>
    <item
        android:id="@+id/action_hotels"
        android:icon="@drawable/ic_local_hotel_black_24dp"
        android:title="@string/hotels"/>

</menu>

ご協力をお願いします。

どのように解決するのですか?

を作成する際に 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="@android:color/holo_blue_dark" />
    <item android:color="@android:color/darker_gray"  />
</selector>

で使用する状態も BottomNavigationBarstate_checked ない state_selected .