Ich verwende BottomNavigationView mit der Android Support Desing Library 25. Wenn ich jedoch die Registerkarten wechsle, wird der Titel der anderen Registerkarte ausgeblendet. Es gibt jedoch kein Problem mit dem Ausblenden der tatsächlichen unteren Navigationsansicht. Aber meins versteckt sich.
Aber ich möchte, dass es so aussieht. Irgendeine Idee dazu? Was vermisse ich?
Hier ist mein Code:
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.yunus.ototakip.MainActivity">
<FrameLayout
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottom_navigation"
android:layout_alignParentTop="true">
</FrameLayout>
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@color/beyaz"
app:itemTextColor="@color/beyaz"
app:menu="@menu/bottombar_menu" />
bottom_bar_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/bb_menu_arac"
android:enabled="true"
android:icon="@drawable/icon_car"
android:title="@string/araclarim"
app:showAsAction="ifRoom" />
<item
android:id="@+id/bb_menu_yakin"
android:enabled="true"
android:icon="@drawable/icon_yer"
android:title="@string/yakinimdakiler"
app:showAsAction="ifRoom" />
<item
android:id="@+id/bb_menu_yaklasan"
android:enabled="true"
android:icon="@drawable/icon_takvim"
android:title="@string/yaklasanlar"
app:showAsAction="ifRoom" />
<item
android:id="@+id/bb_menu_ipucu"
android:enabled="true"
android:icon="@drawable/icon_ipucu"
android:title="@string/ipuclari"
app:showAsAction="ifRoom" />
</menu>
app:showAsAction="always
stattifRoom
Antworten:
Die Lösung mit Reflection funktioniert nicht mehr, da das Feld mShiftingMode entfernt wurde.
Es gibt jetzt eine einfache Möglichkeit: Verwenden Sie die Support Library 28 und fügen
app:labelVisibilityMode="labeled"
Sie sie einfach IhrerBottomNavigationView
XML-Deklaration hinzu.Ich hoffe es hilft.
quelle
AKTUALISIEREN
removeShiftMode () wird nicht mehr benötigt, da wir in der Support-Bibliothek 28.0.0-alpha1 jetzt Labels hinzufügen können .
In XML:
Für programmgesteuerte Änderungen:
Damit dies funktioniert: Aktualisieren Sie die Design-Support-Bibliothek auf 28.0.0-alpha1
Hier ist eine gute Lektüre
FÜR ÄLTERE UNTERSTÜTZUNGSBIBLIOTHEK:
in Ihrem.
bottom_bar_menu.xml
Ändern Sie dasshowAsAction
Attributin build.gradle:
UNTEN NAVIGATIONSANSICHT MEHR ALS 3 EINZELTEILE: Verwenden Sie die
removeShiftMode()
Methodeim
BottomNavigationViewHelper.java
Einsatz:Nennen Sie es mit:
Dadurch wird die Shift-Animation des Titeltextes deaktiviert und die Anzeige des Textes ermöglicht.
quelle
It’s important to note that the maximum number of items we can display is 5. This may change at any point, so it’s important to check this by using the getMaxItem() method provided by the BottomNavigationView class rather than hard-coding the value yourself.
com.android.support:design:25.4.0
, schlägt jedoch fehlcom.android.support:design:26.1.0
, sodass ich das Ziel-SDK und die Version der Abhängigkeiten ein wenig zurücksetze.Nach dem Scannen des Quellcodes von BottomNavigationView finde ich
In der Zeile 265 von BottomNavigationMenuView.java bedeutet dies, dass bei einer Menügröße von mehr als 3 der Tabulatortitel ausgeblendet wird. Wenn Sie also den Tab-Titel anzeigen möchten, müssen Sie nur den Code aus dem Build abrufen und nach unten wechseln.
PS: BottonNavigationView Die maximale Anzahl der Registerkarten muss zwischen 3 und 5 liegen. Sie können Code auf BottomNavigationViewNew abrufen
quelle
Erstellen Sie die Klasse BottomNavigationViewHelper
Anruf
quelle
Kotlin-Erweiterungsfunktion:
quelle
item.setShiftingMode(false)
ist jetztitem.setShifting(false)
Ich habe so ziemlich die Antwort rafsanahmad007 verwendet , aber sie in Kotlin übersetzt. Lassen Sie es mich für die zukünftigen Wanderer teilen
quelle
Dies funktioniert bei mir in API 26:
Nehmen Sie diese Methode in Ihrer Aktivität oder Ihrem Fragment vor, in der Sie Folgendes aufrufen möchten:
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 eine gute Lösung gefunden, um das Verschieben von Text zu stoppen, sowie Symbole für 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 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
schnell behoben einfach App hinzufügen: labelVisibilityMode = "label" in xml
Hinweis
quelle
Eine Sache zu beachten, obwohl es in diesem Fall nicht gilt.
Dieses Muster kann verwendet werden, wenn Sie zwischen 3 und 5 Ziele der obersten Ebene haben, zu denen Sie navigieren können.
Gehen Sie wie folgt vor, damit der Symboltitel angezeigt werden kann:
Stellen Sie sicher, dass Ihr XML-Menüelement (bottom_navigation_menu) wie folgt strukturiert ist: -
Fügen Sie der BottomNavigationView-Code- App Folgendes hinzu : labelVisibilityMode = "label"
quelle