13

Ich habe Bottom Navigation View von Design Support Library 25 in meinem Projekt implementiert. Ich habe 5 Symbole in der Ansicht. Immer wenn ein Icon ausgewählt ist, hat es eine Animation. Aber wenn 3 oder weniger Symbole keine Animationen zeigen. Ich möchte diese Animation entfernen und brauche nur eine Farbänderung für das Symbol. Wie kann ich das erreichen? Fertig genug gegoogelt, konnte aber die Lösung nicht finden. Bitte helfen Sie. Vielen Dank.Wie Symbol Animation für die untere Navigationsansicht in Android entfernen

+1

Mögliche Duplikate von [Wie BottomNavigationView Shift-Modus deaktivieren?] (Https://StackOverflow.com/Questions/40176244/How-to-disable-bottomnavigationview-shift-mode) –

Antwort

66

bekam Antwort von diesem thread.

Um Animation oder Shift-Modus zu entfernen.

Die Implementierung von BottomNavigationView hat Bedingung: Wenn es mehr als 3 Elemente gibt, dann verwenden Sie Shift-Modus.

erstellen Hilfsklasse

import android.support.design.internal.BottomNavigationItemView; 
import android.support.design.internal.BottomNavigationMenuView; 
import android.support.design.widget.BottomNavigationView; 
import android.util.Log; 
import java.lang.reflect.Field; 

public class BottomNavigationViewHelper { 
    public static void disableShiftMode(BottomNavigationView view) { 
     BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0); 
     try { 
      Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode"); 
      shiftingMode.setAccessible(true); 
      shiftingMode.setBoolean(menuView, false); 
      shiftingMode.setAccessible(false); 
      for (int i = 0; i < menuView.getChildCount(); i++) { 
       BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i); 
       //noinspection RestrictedApi 
       item.setShiftingMode(false); 
       // set once again checked value, so view will be updated 
       //noinspection RestrictedApi 
       item.setChecked(item.getItemData().isChecked()); 
      } 
     } catch (NoSuchFieldException e) { 
      Log.e("BNVHelper", "Unable to get shift mode field", e); 
     } catch (IllegalAccessException e) { 
      Log.e("BNVHelper", "Unable to change value of shift mode", e); 
     } 
    } 
} 

Nutzungs

BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_bar); 
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView); 
+1

Hallo, danke für diese Frage und ans Auch das funktioniert perfekt, aber ich kämpfe immer noch mit der Farbe der Symbole, meine Standard-Icons sind schwarz, aber es zeigt helles Schwarz und wenn ich auf das Symbol klicke, wird die Farbe zu weiß. Wie löst man? –

+0

Ich weiß nicht, warum das in meiner App nicht funktioniert :(Ich habe seit Stunden gekämpft – pamobo0609

+0

Wie kann ich Animation deaktivieren, die passiert, wenn Sie auf Element klicken. Im Grunde ist es eine Animation, die eine untere Polsterung auf das Symbol zuweisen –

3

BottomNavigationViewEx ist eine gute Erweiterung Standard BottomNavigationView. enableShiftingMode (false) erledigt die Arbeit für Sie.

Verwandte Themen