BottomNavigationView zeigt keine inaktiven Menütitel an.
Wie werden Titel aller Menüelemente in der bottomNavigationBar angezeigt? Das Problem ist, dass in meinem Fall nur der Titel des angeklickten Elements angezeigt wird.
android
android-support-design
bottomnavigationview
Natan Rubinstein
quelle
quelle
Antworten:
Implementierung von
BottomNavigationView
has Bedingung: Wenn mehr als 3 Elemente vorhanden sind, verwenden Sie den Shift-Modus.Derzeit können Sie es nicht über die vorhandene API ändern. Die einzige Möglichkeit, den Shift-Modus zu deaktivieren, besteht in der Verwendung von Reflection.
Sie benötigen eine Hilfsklasse:
Wenden Sie dann die
disableShiftMode
Methode auf IhrenBottomNavigationView
Code an. Denken Sie jedoch daran, dass Sie die Menüansicht nach dem Aufblasen ausführen müssen, wenn Sie sie in Ihrem Code aufblasen.Anwendungsbeispiel:
PS.
Denken Sie daran, dass Sie diese Methode jedes Mal ausführen müssen, wenn Sie Menüelemente in Ihrem Menü ändern
BottomNavigationView
.AKTUALISIEREN
Sie müssen auch die Proguard-Konfigurationsdatei (z. B. proguard-rules.pro) aktualisieren. Der obige Code verwendet Reflection und funktioniert nicht, wenn Proguard das
mShiftingMode
Feld verschleiert .Vielen Dank an Muhammad Alfaifi, der auf dieses Problem hingewiesen und einen Ausschnitt bereitgestellt hat .
UPDATE 2
Wie Jolanda Verhoef betonte, bietet die neue Support-Bibliothek (
28.0.0-alpha1
) und auch die neue Material Components-Bibliothek (1.0.0-beta01
) eine öffentliche Eigenschaft, mit der der Verschiebemodus über 3 Menüelemente bearbeitet werden kann.In der Materialkomponentenbibliothek gilt dies auch, wenn 5 Menüpunkte vorhanden sind.
UPDATE 3
Wie auch @ThomasSunderland hervorhob, können Sie diese Eigenschaft
app:itemHorizontalTranslation="false"
ohneEnabled
Postfix auf false setzen , um die Verschiebungsanimation zu deaktivieren.Die vollständige Anleitung zum Stylen der BottomNavigation finden Sie hier
quelle
Seit der Unterstützungsbibliothek 28.0.0-alpha1:
quelle
app:
nicht verwendenandroid:
Um die Textanimation zu deaktivieren, können Sie dies auch in Ihrer Datei dimensions.xml verwenden:
Möglicherweise müssen Sie dies auch in Ihr Manifest aufnehmen:
quelle
tools:override="true"
<dimen name="design_bottom_navigation_active_text_size" tools:ignore="PrivateResource">12sp</dimen>
Sie können jetzt
app:labelVisibilityMode="[labeled, unlabeled, selected, auto]"
in verwenden28-alpha
labeled
hält alle Beschriftungen sichtbar.unlabeled
zeigt nur Symbole an.selected
zeigt nur die Beschriftung für das ausgewählte Element und die Verschiebungselemente an.auto
wählt beschriftet oder ausgewählt basierend auf der Anzahl der Elemente, die Sie haben. beschriftet für 1-3 Artikel und ausgewählt für 3+ Artikel.quelle
Przemysławs Antwort in Kotlin als Erweiterungsfunktion
Verwendung (mit Kotlin Android Extensions):
quelle
Funktioniert bei mir
oder
quelle
Um die Textanimation zu deaktivieren und die Schriftgröße zu verringern, verwenden Sie Folgendes in Ihrer Datei dimensions.xml:
quelle
Navigate
->File...
>design_bottom_navigation_item.xml
sehen , dass es keinen anderen Weg.AKTUALISIEREN
in Android SDK - Version 28 und höher sie haben sich geändert
item.setShiftingMode(false)
zuitem.setShifting(false)
Auch sie haben das Feld entfernt
mShiftingMode
So wird die Nutzung sein
quelle
Wie andere bereits betont haben, ist es seit der Unterstützung der Bibliothek 28.0.0-alpha1 möglich:
oder Sie können es programmgesteuert einstellen .
Hinweis: Wenn Sie ein Upgrade von einer älteren Version der Support-Bibliothek durchführen, vergessen Sie nicht, die SDK-Kompilierungsversion zu aktivieren. Überprüfen Sie die Versionen der Support-Bibliothek hier: Versionen der Support-Bibliothek
Möglicherweise wird beim Kompilieren jedoch weiterhin die Meldung labelVisibilityMode nicht gefunden angezeigt , wenn Ihre App von älteren Versionen der Designunterstützungsbibliothek abhängt. Wenn dies der Fall ist, versuchen Sie, ein Upgrade auf eine Version der angegebenen Abhängigkeit durchzuführen, die mindestens von der Version 28.0.0-alpha1 der Designunterstützungsbibliothek abhängt. Wenn dies nicht möglich ist, definieren Sie die Abhängigkeit explizit.
Wenn Sie Gradle verwenden
So fügen Sie in Ihrem build.gradle explizit Abhängigkeiten zur Designunterstützung hinzu :
Implementierung 'com.android.support:design:28.0.0'
quelle
Für aktualisierte Antwort mit der Standardeinstellung. Update auf die neueste Designbibliothek
und in Ihre BottomNavigationView-XML-Attribute einfügen
Sie können es auch programmatisch ausdrücken
Die Quelle finden Sie hier BottomNavigationView
Hoffe das hilft dir.
quelle
app:labelVisibilityMode
?Zu Ihrem
BottomNavigationView
hinzufügenapp:labelVisibilityMode="unlabeled"
was zu folgendem führt
quelle
Es ist sehr einfach. Fügen Sie einfach eine Eigenschaft in BottomNaviationView hinzu
quelle
Ich hatte ein seltsames Verhalten mit BottomNavigationView. Wenn ich ein Element / Fragment darin ausgewählt habe, drückt das Fragment BottomNavigationView etwas nach unten, sodass der Text von BottomNavigationView unter dem Bildschirm angezeigt wird, sodass nur Symbole sichtbar sind und der Text beim Klicken auf ein Element ausgeblendet wird.
Wenn Sie mit diesem seltsamen Verhalten konfrontiert sind, dann ist hier die Lösung. Einfach entfernen
in Ihrem Root-Layout des Fragments. Einfach entfernen und boomen! BottomNavigationView funktioniert einwandfrei, jetzt kann es mit Text und Symbol angezeigt werden. Ich hatte dies in meinem Root CoordinatorLayout des Fragments.
Vergessen Sie auch nicht hinzuzufügen
in Ihrer Aktivität, um den Schaltmodus zu deaktivieren. Es hängt zwar nicht genau mit der gestellten Frage zusammen, aber ich finde das trotzdem hilfreich.
quelle
Dies ist eine Bibliothek von Drittanbietern, die ich verwende. Sie verfügt über viele Anpassungsoptionen wie das Deaktivieren des Schichtmodus, das Anzeigen nur von Symbolen , das Festlegen der Symbolgröße usw. BottomNavigationViewEx
quelle
So entfernen Sie Animationen vollständig:
Wenn Sie auch diese nervige kleine Animation am oberen Rand loswerden möchten, benötigen Sie mehr Reflexionscode. Hier ist die Komplettlösung, mit der Animationen entfernt werden:
Und stellen Sie sicher, dass Sie dies zu Ihrer Proguard-Konfigurationsdatei hinzufügen:
quelle
Aktualisieren Sie Ihre Support-Bibliothek auf 28.0.0.
quelle
Wenn Sie support: design: 28.0.0 verwenden, fügen Sie diese Zeilen-App hinzu: labelVisibilityMode = "unlabeled" zu Ihrer BottomNavigationView
quelle
Ich möchte nur hinzufügen, dass über dieser Methode disableShiftMode auch unter Code hinzugefügt wird. @ SuppressLint ("RestrictedApi")
quelle
https://android.jlelse.eu/disable-shift-label-animation-from-bottom-navigation-android-b42a25dcbffc
1
2
3
quelle
Sie können dies verwenden, um sowohl Text als auch Symbole in BottomNevigationView für 3 bis 5 Elemente anzuzeigen und die Verschiebung zu beenden.
In BottmNevigationView für 5 Elemente treten jedoch Probleme beim Schneiden von Langtext auf. Dafür habe ich gute Lösungen gefunden, um das Verschieben von Text zu stoppen, sowie Symbole von BottomNevigationView. Sie können auch das Verschieben von Text und Symbolen in BottomNevigationView beenden. Hier finden Sie Snipshots des Codes.
1. Fügen Sie diese Codezeile wie gezeigt in BottomNevigationView hinzu
2. Fügen Sie Menüelemente wie folgt hinzu: -
3. Fügen Sie diesen Stil in die Datei style.xml ein:
4) Fügen Sie diese in den Ordner Dimen ein
Ich habe Hilfe von diesem Link bekommen und Link erhalten. Sie können auch Hilfe erhalten, indem Sie diese Links studieren. Dies hilft mir sehr. Ich hoffe, dies hilft Ihnen auch. Vielen Dank....
quelle