Zaimplementowałem Dolny widok nawigacji z biblioteki wsparcia projektu 25 w moim projekcie. Mam 5 ikon w widoku. po wybraniu ikony pojawia się animacja. Ale gdy 3 lub mniej ikon nie pokazuje żadnych animacji. Chcę usunąć tę animację i potrzebuję tylko zmiany koloru ikony. Jak mogę to osiągnąć? Zrobiono wystarczająco dużo googlowania, ale nie udało się znaleźć rozwiązania. Proszę pomóż. Dzięki.Jak usunąć animację ikon dla dolnego widoku nawigacyjnego w Androidzie
Odpowiedz
otrzymałem odpowiedź od tego thread.
Aby usunąć animację lub tryb przesunięcia.
Implementacja BottomNavigationView
ma warunek: gdy jest więcej niż 3 elementy, użyj trybu zmiany.
Tworzenie klasy pomocnika
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);
}
}
}
Wykorzystanie
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_bar);
BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
Witam, dziękuję za ten quetion i ans też działa to idealnie, ale nadal mam problem z kolorami ikon, moje domyślne ikony są czarne, ale wyświetlają się w kolorze jasnoniebieskim, a po kliknięciu ikony kolory zmieniają się na białe. jak rozwiązać? –
Nie wiem, dlaczego to nie działa w mojej aplikacji :(Od kilku godzin borykam się z problemami – pamobo0609
jak wyłączyć animację, która dzieje się po kliknięciu elementu, zasadniczo jest to animacja, która przypisuje dolny margines do ikony –
BottomNavigationViewEx jest dobrym rozszerzeniem standardowej BottomNavigationView. enableShiftingMode (false) wykonuje zadanie za Ciebie.
Możliwy duplikat [Jak wyłączyć Tryb przesunięcia BottomNavigationView?] (Https://stackoverflow.com/questions/40176244/how-to-disable-bottomnavigationview-shift-mode) –