web-dev-qa-db-ja.com

下部ナビゲーションビューで選択したタブの色

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

どうぞよろしくお願いします。

97

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>

そしてBottomNavigationBarで使われる状態はstate_checkedではなくstate_selectedです。

244
Kamran Ahmed

1。内側res名前の色でフォルダを作成します(drawableのように)

2.カラーフォルダを右クリック。 new-> colorリソースファイル - > color.xmlファイルの作成(bnv_tab_item_foreground)を選択します(図1:ファイル構造)

3.bnv_tab_item_foregroundをコピーして貼り付けます

<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"
            app:itemBackground="@color/appcolor"//diffrent color
            app:itemIconTint="@color/bnv_tab_item_foreground" //inside folder 2 diff colors
            app:itemTextColor="@color/bnv_tab_item_foreground"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:menu="@menu/navigation" />

bnv_tab_item_foreground:

 <?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/white" />
        <item Android:color="@Android:color/darker_gray"  />
    </selector>

図1:ファイル構造:

Figure 1: File Structure

27
Kishore Reddy

BottomNavigationViewは選択されたタブに適用されたテーマから colorPrimary を使用し、非アクティブなタブアイコンの色合いには usesAndroid:textColorSecondaryを使用します。

つまり、好みの原色でスタイルを作成し、それをxmlレイアウトファイル内のBottomNavigationViewのテーマとして設定できます。

styles.xml

 <style name="BottomNavigationTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/active_tab_color</item>
        <item name="Android:textColorSecondary">@color/inactive_tab_color</item>
 </style>

yyour_layout.xml

<Android.support.design.widget.BottomNavigationView
            Android:id="@+id/navigation"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:background="?android:attr/windowBackground"
            Android:theme="@style/BottomNavigationTheme"
            app:menu="@menu/navigation" />
17
dzikovskyy

答えには手遅れですが、誰にとっても役立ちます。私は非常に愚かな間違いをしていた、私はbottom_color_nav.xmlを使用して、色の変更を選択および選択解除した。 BottomNavigationでまだ適切な色が得られない。

それから、私はonNavigationItemSelectedメソッドでfalseが返されたことに気付きました。このメソッドはコードでのみ発行されました。

1

プログラムでアイコンの色とテキストの色を変更する場合は、次の手順を実行します。

ColorStateList iconsColorStates = new ColorStateList(
            new int[][]{
                    new int[]{-Android.R.attr.state_checked},
                    new int[]{Android.R.attr.state_checked}
            },
            new int[]{
                    Color.parseColor("#123456"),
                    Color.parseColor("#654321")
            });

    ColorStateList textColorStates = new ColorStateList(
            new int[][]{
                    new int[]{-Android.R.attr.state_checked},
                    new int[]{Android.R.attr.state_checked}
            },
            new int[]{
                    Color.parseColor("#123456"),
                    Color.parseColor("#654321")
            });

    navigation.setItemIconTintList(iconsColorStates);
    navigation.setItemTextColor(textColorStates);
0
EAMax

これは動作します:

setItemBackgroundResource(Android.R.color.holo_red_light)
0
KUNAL DAS

セレクタ項目の属性にAndroid:state_enabledではなくAndroid:state_selectedを使用してみてください。

0
Abtin Gramian