Ich habe in meinem Projekt die untere Navigationsansicht aus der Design Support Library 25 implementiert. Ich habe 5 Icons in der Ansicht. Jedes Mal, wenn ein Symbol ausgewählt wird, enthält es eine Animation. Bei 3 oder weniger Icons werden jedoch keine Animationen angezeigt. Ich möchte diese Animation entfernen und brauche nur etwas Farbänderung für das Symbol. Wie kann ich das erreichen? Genug gegoogelt, aber keine Lösung gefunden. Bitte helfen Vielen Dank.
bekam Antwort von diesem Thread .
Zum Entfernen des Animations- oder Umschaltmodus.
Die Implementierung von BottomNavigationView
hat eine Bedingung: Wenn mehr als 3 Elemente vorhanden sind, verwenden Sie den Shift-Modus.
Helferklasse erstellen
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);
}
}
}
Verwendungszweck
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_bar);
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
BottomNavigationViewEx ist eine gute Erweiterung des Standards BottomNavigationView . EnableShiftingMode (false) erledigt den Job für Sie.
Ich habe es versucht und es hat gut funktioniert
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
Oder dieser Code mainactivity.xml
app:labelVisibilityMode="unlabeled"
wenn ich die aktuelle Version benutze
implementation 'com.google.Android.material:material:1.1.0-alpha06'
und ich setze labelVisibilityMode auf "labels"
app:labelVisibilityMode="labeled"
unter diesen Umständen habe ich es durch
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">@dimen/design_bottom_navigation_text_size</dimen>
Ich hoffe ich kann dir auch helfen.
Versuchen Sie dies ist das Layout
app:labelVisibilityMode="labeled"
oder in der Codeebene mNavigationView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED);
Aktualisieren Sie Ihre Design-Support-Bibliothek auf 28.0. +
Dies ist möglicherweise nicht die eleganteste oder praktischste Lösung, Sie können jedoch versuchen, die folgende Zeile in Ihre BottomNavigationView einzufügen.
app:labelVisibilityMode="unlabeled"
Dadurch wird das Label entfernt und die Animation deaktiviert.
Um eine Animation oder eine Verschiebung zu entfernen, erstellen Sie eine bottomNavigationViewHelper-Klasse mit bottomNavigationViewEX
package com.example.chitchat.utils;
import Android.util.Log;
import com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx;
public class BottomNavigationViewHelper {
private static final String TAG = "bottomNavigationViewHel";
public static void setupBottomnavigationView(BottomNavigationViewEx bottomNavigationViewEx)
{
Log.d(TAG, "setupBottomnavigationView: setting up bottom navigation view");
bottomNavigationViewEx.enableAnimation(false);
bottomNavigationViewEx.enableShiftingMode(false);
bottomNavigationViewEx.enableItemShiftingMode(false);
bottomNavigationViewEx.setTextVisibility(false);
}
}
Material Design wird immer handlicher.
App-Abhängigkeit zu Ihrer Gradle-Datei (Update auf die neueste Version).
implementation 'com.google.Android.material:material:1.1.0-alpha09'
In MainActivity muss nur die Funktion clearAnimation () für die BottomNavigationView-Klasse aufgerufen werden
BottomNavigationView navView = findViewById(R.id.nav_view);
navView.clearAnimation();
Ich füge nur diesen Code auf dimens.xml hinzu und es funktioniert wie ein Zauber!
<dimen name="design_bottom_navigation_active_text_size" tools:override="true">@dimen/design_bottom_navigation_text_size</dimen>