BottomNavigationView nie pokazuje tytułów menu, które są nieaktywne.
Jak wyświetlić tytuły wszystkich elementów menu w bottomNavigationBar? Problem w tym, że w moim przypadku pokazywany jest tylko tytuł klikniętego elementu.
android
android-support-design
bottomnavigationview
Natan Rubinstein
źródło
źródło
Odpowiedzi:
Realizacja
BottomNavigationView
warunku has: gdy jest więcej niż 3 elementy, użyj trybu przesunięcia.W tej chwili nie możesz go zmienić za pomocą istniejącego interfejsu API, a jedynym sposobem na wyłączenie trybu zmiany jest użycie odbicia.
Będziesz potrzebować klasy pomocnika:
Następnie zastosuj
disableShiftMode
metodę na swoimBottomNavigationView
, ale pamiętaj, że jeśli nadmuchujesz widok menu z kodu, musisz go wykonać po zawyżeniu.Przykładowe użycie:
PS.
Pamiętaj, że będziesz musiał wykonywać tę metodę za każdym razem, gdy zmieniasz pozycje menu w pliku
BottomNavigationView
.AKTUALIZACJA
Musisz także zaktualizować plik konfiguracyjny proguard (np. Proguard-rules.pro), powyższy kod używa odbicia i nie zadziała, jeśli program proguard zaciemni
mShiftingMode
pole.Dziękuję Muhammadowi Alfaifi za wskazanie tego problemu i udostępnienie fragmentu .
AKTUALIZACJA 2
Jak zwróciła uwagę Jolanda Verhoef, nowa biblioteka Support (
28.0.0-alpha1
), a także nowa biblioteka Material Components (1.0.0-beta01
) oferuje publiczną właściwość, która może być używana do manipulowania trybem przesuwania w 3 pozycjach menu.W bibliotece Komponenty materiałów ma to również zastosowanie, jeśli istnieje 5 pozycji menu.
AKTUALIZACJA 3
Jak zauważył @ThomasSunderland, możesz ustawić tę właściwość na false
app:itemHorizontalTranslation="false"
bezEnabled
postfiksa, aby wyłączyć animację przesunięcia.możesz zapoznać się z pełnym przewodnikiem dotyczącym stylizacji Nawigacji Dolnej tutaj
źródło
Od obsługi biblioteki 28.0.0-alpha1:
źródło
app:
nieandroid:
Aby wyłączyć animację tekstu, możesz również użyć tego w swoim pliku dimens.xml:
Może być konieczne dodanie tego w swoim manifeście:
źródło
tools:override="true"
<dimen name="design_bottom_navigation_active_text_size" tools:ignore="PrivateResource">12sp</dimen>
Możesz teraz używać
app:labelVisibilityMode="[labeled, unlabeled, selected, auto]"
w28-alpha
labeled
sprawi, że wszystkie etykiety będą widoczne.unlabeled
pokaże tylko ikony.selected
pokaże tylko etykietę dla wybranego elementu i przesunie elementy.auto
wybierze oznaczone lub wybrane na podstawie liczby posiadanych elementów. oznaczone dla 1-3 elementów i wybrane dla 3+ elementów.źródło
Odpowiedź Przemysława w Kotlinie jako funkcja rozszerzenia
Użycie (z rozszerzeniami Kotlin dla systemu Android):
źródło
Pracuje dla mnie
lub
źródło
Aby wyłączyć animację tekstu i zmniejszyć rozmiar czcionki, użyj tego w pliku dimens.xml:
źródło
Navigate
->File...
>design_bottom_navigation_item.xml
, aby zobaczyć, że nie ma innego sposobu.AKTUALIZACJA
w Android SDK w wersji 28 i nowszych zostały one zmienione
item.setShiftingMode(false)
naitem.setShifting(false)
Usunęli też pole
mShiftingMode
Więc użycie będzie
źródło
Jak zauważyli inni, od czasu obsługi biblioteki 28.0.0-alpha1 możliwe jest:
lub możesz ustawić to programowo .
Uwaga: jeśli aktualizujesz ze starszej wersji biblioteki wsparcia, nie zapomnij o podniesieniu kompilacji wersji SDK. Sprawdź wersje biblioteki pomocy technicznej tutaj: Obsługuj wersje biblioteki
Jednak nadal możesz otrzymać komunikat nie znaleziono labelVisibilityMode podczas kompilacji, jeśli Twoja aplikacja zależy od starszych wersji biblioteki obsługi projektowania. W takim przypadku spróbuj zaktualizować do wersji podanej zależności, która zależy przynajmniej od wersji 28.0.0-alpha1 biblioteki obsługi projektowania. Jeśli nie jest to możliwe, jawnie zdefiniuj zależność.
Jeśli używasz Gradle
Aby jawnie dodać zależność obsługi projektu w pliku build.gradle :
wdrożenie „com.android.support:design:28.0.0”
źródło
Aby uzyskać zaktualizowaną odpowiedź, użyj domyślnej. Zaktualizuj do najnowszej biblioteki projektów
i umieść w swoich atrybutach BottomNavigationView xml
możesz to również umieścić programowo
Możesz znaleźć źródło tutaj BottomNavigationView
Mam nadzieję, że to ci pomoże.
źródło
app:labelVisibilityMode
?Do twojego
BottomNavigationView
dodatkuapp:labelVisibilityMode="unlabeled"
co skutkuje następującym
źródło
To bardzo proste, wystarczy dodać właściwość w BottomNaviationView
źródło
Miałem dziwne zachowanie z BottomNavigationView. Kiedy wybierałem dowolny element / fragment w nim, fragment wypycha BottomNavigationView nieco niżej, więc tekst BottomNavigationView przechodzi poniżej ekranu, więc widoczne są tylko ikony, a tekst jest ukrywany po kliknięciu dowolnego elementu.
Jeśli masz do czynienia z tym dziwnym zachowaniem, oto rozwiązanie. Po prostu usuń
w głównym układzie fragmentu. Po prostu usuń to i bum! BottomNavigationView będzie działać dobrze, teraz można go wyświetlić z tekstem i ikoną. Miałem to w moim głównym Koordynatorze Układ fragmentu.
Nie zapomnij też dodać
w swojej aktywności, aby wyłączyć tryb zmiany biegów. Chociaż nie jest to dokładnie związane z zadanym pytaniem, nadal uważam to za pomocne.
źródło
To jest biblioteka innej firmy, której używam i ma wiele opcji dostosowywania, takich jak wyłączenie trybu zmiany, wyświetlanie tylko ikon, ustawianie rozmiaru ikon itp. BottomNavigationViewEx
źródło
Aby całkowicie usunąć animacje:
Jeśli chcesz pozbyć się tej irytującej animacji górnego marginesu, potrzebujesz więcej kodu odbicia. Oto kompletne rozwiązanie, które usuwa wszelkie animacje:
I pamiętaj, aby dodać to do pliku konfiguracyjnego programu Proguard:
źródło
zaktualizuj bibliotekę pomocy technicznej do wersji 28.0.0.
źródło
Jeśli używasz support: design: 28.0.0 dodaj tę aplikację liniową: labelVisibilityMode = "unlabeled" do swojego BottomNavigationView
źródło
po prostu chcę dodać, że powyżej tej metody disableShiftMode dodaj też poniższy kod. @SuppressLint ("RestrictedApi")
źródło
https://android.jlelse.eu/disable-shift-label-animation-from-bottom-navigation-android-b42a25dcbffc
1
2
3
źródło
Możesz użyć tego do wyświetlania zarówno tekstu, jak i ikon w BottomNevigationView dla 3 do 5 elementów i zatrzymania przesuwania.
Ale napotkasz problem z wycinaniem długiego tekstu w BottmNevigationView dla 5 elementów. w tym celu znalazłem dobre rozwiązania, aby zatrzymać przesuwanie tekstu, a także ikony BottomNevigationView. Możesz także zatrzymać przesuwanie tekstu, a także ikon w widoku BottomNevigationView. Tutaj zamieszczono fragmenty kodu.
1. Dodaj tę linię kodu w BottomNevigationView, jak pokazano
2. Dodaj elementy menu w następujący sposób: -
3. Dodaj ten styl w pliku style.xml:
4) Dodaj je w folderze Dimen
Mam pomocy od tych linku i odwołuje Ty możesz również uzyskać uzyskać pomoc studiując te links.This pomaga mnie lot.Hope to również pomóc. Dzięki....
źródło