web-dev-qa-db-fra.com

élément couleur sélectionnée dans Android BottomNavigationView

Je me réfère this . L'activité Horaires apparaît lorsque je clique sur Horaires, mais la couleur du premier élément (Favoris) est toujours sélectionnée. Il ne change pas la couleur de l'élément Planifications de la couleur de l'élément Favoris. Et aussi, troisième élément (Musique). J'utilise Android: state_checked PAS Android: state_enabled . "Si vous travaillez avec startActivity, cela ne change pas la couleur de l'élément Planifications à partir de la couleur de l'élément Favoris. Sinon, il change de couleur. Comment résoudre ce problème de sélection de couleur.

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

créer un répertoire de couleurs en res et créer votre fichier xml pour personnaliser les éléments de navigation inférieurs

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>

et dans votre application de jeu BottomNavigationView: itemTextColor et app: valeurs de 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"/>
92

voici une solution simple à votre question

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

le sélecteur 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>

mettre à jour la couleur du sélecteur d’éléments de tabulation selon vos besoins.

5
Ankush Bist

Avez-vous entendu parler du projet d'emballage appelé BottomBar of Roughike, qui facilite l'utilisation de BottomNavigationView? Le projet peut être trouvé ici .

Je vous suggère d'utiliser ce projet qui est à jour et a une contribution de haut niveau. Si vous vous référez à ceci, vous pouvez simplement insérer le code ci-dessous pour changer les couleurs lorsque vous cliquez sur les onglets et créer des options bien plus personnalisées:

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) {
                          }
                        });
                      }
                    }
                  });

Donc, fondamentalement, ce que je fais ici, je colore les onglets non sélectionnés en #7E7E7E et effacez le filtre pour la coloration de ceux sélectionnés afin qu'ils apparaissent avec leur couleur d'origine de leur icône. Bien sûr, vous pouvez également utiliser une autre couleur lors de la sélection, à vous de choisir.

J'espère que cela vous aide!

À votre santé,

Renc

1
user4156995