web-dev-qa-db-ja.com

Android BottomNavigationViewのアイテム選択色

this を参照します。 [スケジュール]をクリックすると、スケジュールアクティビティが表示されますが、最初のアイテムの色(お気に入り)が常に選択されています。お気に入りのアイテムの色からスケジュールのアイテムの色は変更されません。また、3番目の項目(音楽)。私はAndroid:state_checkedNOTAndroid:state_enabledを使用します。 startActivity、スケジュール項目の色をお気に入り項目の色から変更しません。そうでない場合、色を変更します。

activity_main.xml

app:itemIconTint="@drawable/nav_item_color_state"
app:itemTextColor="@drawable/nav_item_color_state"
app:menu="@menu/bottom_navigation_main"

@ drawable/nav_item_color_state

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:color="@color/white" Android:state_enabled="true" />
    <item Android:color="@color/colorPrimaryDark" Android:state_enabled="false" />
</selector>
27
WPG

resにカラーディレクトリを作成し、xmlファイルを作成して下部のナビゲーションアイテムをカスタマイズします

res/color/bottom_nav_color.xml:

<?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/your_color" />
     <item Android:state_checked="false" Android:color="@color/your_color"/>
</selector>

bottomNavigationViewでapp:itemTextColorおよびapp:itemIconTintの値を@ color/bottom_nav_colorに設定します

<Android.support.design.widget.BottomNavigationView
     xmlns:Android="http://schemas.Android.com/apk/res/Android"
     xmlns:app="http://schemas.Android.com/apk/res-auto"
     Android:id="@+id/main_navigation"
     Android:layout_width="match_parent"
     Android:layout_height="wrap_content"
     Android:layout_alignParentBottom="true"
     Android:background="@color/actionBarColor"
     app:menu="@menu/my_navigation_items"
     app:itemTextColor="@color/bottom_nav_color"
     app:itemIconTint="@color/bottom_nav_color"/>

ここにあなたの質問の簡単な解決策があります

<Android.support.design.widget.TabLayout
....
app:tabBackground="@drawable/tab_color_selector"
...
/>

セレクターres/drawable/tab_color_selector.xml

 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:drawable="@color/tab_background_selected" Android:state_selected="true"/>
    <item Android:drawable="@color/tab_background_unselected" Android:state_checked="false"/>
 </selector>

必要なタブ項目セレクターの色を更新します。

5
Ankush Bist

BottomNavigationViewの使用を容易にするRoughikeのBottomBarと呼ばれるラッパープロジェクトについて聞いたことがありますか?プロジェクトは here にあります。

最新のプロジェクトであり、高いレベルで貢献しているプロジェクトを使用することをお勧めします。これを使用することを参照する場合、タブをクリックしたときに色を変更するために以下のコードを挿入するだけで、より多くのカスタマイズされた操作を実行できます。

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
Tab tab = newTab().setIcon(new BitmapDrawable(getResources(), icon)));
tab.getIcon().setColorFilter(Color.parseColor("#7E7E7E"), PorterDuff.Mode.SRC_IN);

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                          @Override public void onTabSelected(TabLayout.Tab tab) {
                            if (tab != null && tab.getIcon() != null) {
                              tab.getIcon().clearColorFilter();
                              }
                          }
                          @Override public void onTabUnselected(TabLayout.Tab tab) {
                            if (tab != null && tab.getIcon() != null) {
                              tab.getIcon()
                                  .setColorFilter(Color.parseColor("#7E7E7E"),
                                      PorterDuff.Mode.SRC_IN);
                            }
                          }
                          @Override public void onTabReselected(TabLayout.Tab tab) {
                          }
                        });
                      }
                    }
                  });

基本的にここで行うことは、選択されていないタブを#7E7E7Eを選択し、選択したものからカラーリング用のフィルターをクリアして、アイコンの元の色で表示されるようにします。もちろん、選択時に別の色で塗りつぶすこともできますが、それはあなた次第です。

これがあなたを助けることを願っています!

乾杯、

レンク

1
user4156995