0

Probieren Sie die Standardeinstellungen aus BottomNavigationWählen Sie zwei Farben (für die zwei Zustände der Menüelemente) eine dritte Bedingung und eine dritte Farbe aus. Dazu in der ziehbar eine Datei „bottom_nav_colors.xml“ erstellt mit den Selektoren:Wie ändert man die Farbe eines bestimmten Elements BottomNavigationView mit ColorStateList?

<?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/colorPrimaryDark"/> 
    <item android:state_activated="true" 
     android:color = "@color/colorAccent"/> 
    <item android:color = "@color/colorGray" /> 
</selector > 

Die Datei mit Layout-Vorlage „activity_main.xml“ wies darauf hin:

<android.support.design.widget.BottomNavigationView 
    android:id="@+id/navigation" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:background="?android:attr/windowBackground" 
    app:menu="@menu/navigation_menu" 
    app:itemIconTint="@drawable/bottom_nav_colors" 
    app:itemTextColor="@drawable/bottom_nav_colors"/> 

Allerdings kann ich nicht verstehen heraus, welche Methode der Klasse "BottomNavigationView" außerhalb der Klasse "MainActivity.java" (geerbt von der Klasse "MvpAppCompatActivity"), um sie für meinen Menüpunkt als "aktiviert" zu aktivieren (oder eine andere aus der Liste: "beschleunigt", "aktiv" , etc.).

Oder wenn Sie das nicht tun können, wie kann?

Antwort

0

Leider "BottomNavigationView" wird dieser Trick nicht funktionieren. Aber wenn man seinen Erben verwenden aus here, es ist alles leicht genug getan:

if (ServiceApp.getCartsGoodsNumber() > 0) { 

    bnve.getBottomNavigationItemView(i).setIconTintList(
     ContextCompat.getColorStateList(
      bnve.getContext(), 
      color.bottom_select_nav_colors)); 
    addBadgeAt(bnve, i, ServiceApp.getCartsGoodsNumber()); 

} else { 

    bnve.getBottomNavigationItemView(i).setIconTintList(null); 

    if (mNavigation_20Badge != null) mNavigation_20Badge.hide(true); 
} 

Hier bnve eine Instanz der Klasse „BottomNavigationViewExe“ ​​und die Methode addBadgeAt() sieht wie folgt aus:

private void addBadgeAt(BottomNavigationViewEx bnve, 
         final int position, final int number) { 
    // add badge 
    mNavigation_20Badge = new QBadgeView(bnve.getContext()) 
      .setBadgeNumber(number).setGravityOffset(12, 2, true) 
      .bindTarget(bnve.getBottomNavigationItemView(position)); 
} 

Mit dieser Methode können Sie ein Badge-Symbol hinzufügen:

enter image description here

Verwandte Themen