BottomNavigationView n'affiche pas le titre du menu qui est inactif.
Comment afficher les titres de tous les éléments de menu dans bottomNavigationBar? Le problème est que dans mon cas, il ne montre que le titre de l'élément sur lequel l'utilisateur clique.
android
android-support-design
bottomnavigationview
Natan Rubinstein
la source
la source
Réponses:
Mise en œuvre de la
BottomNavigationView
condition: lorsqu'il y a plus de 3 éléments, utilisez le mode shift.Pour le moment, vous ne pouvez pas le modifier via l'API existante et la seule façon de désactiver le mode shift est d'utiliser la réflexion.
Vous aurez besoin d'une classe d'aide:
Et puis appliquez la
disableShiftMode
méthode sur votreBottomNavigationView
, mais rappelez-vous que si vous gonflez la vue du menu à partir de votre code, vous devez l'exécuter après avoir gonflé.Exemple d'utilisation:
PS.
N'oubliez pas que vous devrez exécuter cette méthode chaque fois que vous modifiez les éléments de menu dans votre
BottomNavigationView
.METTRE À JOUR
Vous devez également mettre à jour le fichier de configuration de proguard (par exemple proguard-rules.pro), le code ci-dessus utilise la réflexion et ne fonctionnera pas si proguard obscurcit le
mShiftingMode
champ.Merci à Muhammad Alfaifi d'avoir signalé ce problème et d'avoir fourni un extrait .
MISE À JOUR 2
Comme Jolanda Verhoef l'a souligné, la nouvelle bibliothèque de support (
28.0.0-alpha1
) ainsi que la nouvelle bibliothèque de composants matériels (1.0.0-beta01
) offrent une propriété publique qui peut être utilisée pour manipuler le mode de décalage sur 3 éléments de menu.Dans la bibliothèque des composants matériels, cela s'applique également s'il y a 5 éléments de menu.
MISE À JOUR 3
Comme @ThomasSunderland l'a également souligné, vous pouvez définir cette propriété sur false
app:itemHorizontalTranslation="false"
sansEnabled
suffixe pour désactiver l'animation de décalage.vous pouvez consulter le guide complet de la mise en forme du BottomNavigation ici
la source
Depuis la bibliothèque de support 28.0.0-alpha1:
la source
app:
pasandroid:
Pour désactiver l'animation de texte, vous pouvez également l'utiliser dans votre fichier dimens.xml:
Vous devrez peut-être également ajouter ceci dans votre manifeste:
la source
tools:override="true"
<dimen name="design_bottom_navigation_active_text_size" tools:ignore="PrivateResource">12sp</dimen>
Vous pouvez maintenant utiliser
app:labelVisibilityMode="[labeled, unlabeled, selected, auto]"
dans28-alpha
labeled
gardera toutes les étiquettes visibles.unlabeled
affichera uniquement les icônes.selected
affichera uniquement l'étiquette de l'élément sélectionné et les éléments de décalage.auto
choisira étiqueté ou sélectionné en fonction du nombre d'articles que vous avez. étiqueté pour 1-3 articles et sélectionné pour 3+ articles.la source
La réponse de Przemysław dans Kotlin en tant que fonction d'extension
Utilisation (avec les extensions Android Kotlin):
la source
Travaille pour moi
ou
la source
Pour désactiver l'animation de texte et réduire la taille de la police, utilisez ceci dans votre fichier dimens.xml:
la source
Navigate
->File...
>design_bottom_navigation_item.xml
pour voir qu'il n'y a pas d' autre moyen.METTRE À JOUR
dans la version Android 28 et au- dessus , ils ont changé
item.setShiftingMode(false)
deitem.setShifting(false)
Aussi ils ont enlevé le champ
mShiftingMode
Donc l'utilisation sera
la source
Comme d'autres l'ont souligné, depuis la bibliothèque de support 28.0.0-alpha1, il est possible:
ou vous pouvez le définir par programme .
Remarque: si vous effectuez une mise à niveau à partir d'une ancienne version de la bibliothèque de support, n'oubliez pas d'augmenter la version de compilation du SDK. Vérifiez les versions de la bibliothèque de support ici: Versions de la bibliothèque de support
Cependant, vous pouvez toujours obtenir labelVisibilityMode introuvable message lors de la compilation, si votre application dépend des anciennes versions de la bibliothèque de support de conception. Si tel est le cas, essayez de mettre à niveau vers une version de la dépendance donnée, qui dépend au moins de la version de 28.0.0-alpha1 de la bibliothèque de support de conception. Si ce n'est pas possible, définissez la dépendance explicitement.
Si vous utilisez Gradle
Pour ajouter une dépendance de support de conception explicitement dans votre build.gradle :
implémentation 'com.android.support:design:28.0.0'
la source
Pour une réponse mise à jour en utilisant la valeur par défaut. Mettre à jour vers la dernière bibliothèque de conception
et mettez à vos attributs XML BottomNavigationView
vous pouvez le mettre aussi par programmation
Vous pouvez trouver la source ici BottomNavigationView
J'espère que cela vous aide.
la source
app:labelVisibilityMode
?À votre
BottomNavigationView
ajouterapp:labelVisibilityMode="unlabeled"
ce qui donne les résultats suivants
la source
C'est très simple, il suffit d'ajouter une propriété dans BottomNaviationView
la source
J'ai eu un comportement étrange avec BottomNavigationView. Lorsque je sélectionnais un élément / fragment qu'il contient, le fragment pousse BottomNavigationView un peu plus bas, de sorte que le texte de BottomNavigationView passe sous l'écran, de sorte que seules les icônes étaient visibles et le texte est masqué en cliquant sur n'importe quel élément.
Si vous êtes confronté à ce comportement étrange, voici la solution. Retirez simplement
dans votre disposition racine de fragment. Retirez simplement ceci et boum! BottomNavigationView fonctionnera bien, maintenant il peut être affiché avec du texte et une icône. J'avais ceci dans ma racine CoordinatorLayout de fragment.
N'oubliez pas non plus d'ajouter
dans votre activité pour désactiver le mode de changement de vitesse. Bien que ce ne soit pas exactement lié à la question posée, mais je trouve cela utile.
la source
Il s'agit d'une bibliothèque tierce que j'utilise et elle dispose de nombreuses options de personnalisation telles que la désactivation du mode shift, l'affichage uniquement des icônes, la définition de la taille des icônes, etc. BottomNavigationViewEx
la source
Pour supprimer complètement les animations:
Si vous souhaitez également vous débarrasser de cette petite animation ennuyeuse de la marge supérieure, vous avez besoin de plus de code de réflexion. Voici la solution complète qui supprime toute animation:
Et assurez-vous de l'ajouter à votre fichier de configuration proguard:
la source
mettez à jour votre bibliothèque de support vers 28.0.0.
la source
Si vous utilisez support: design: 28.0.0 ajoutez cette ligne app: labelVisibilityMode = "unabeled" à votre BottomNavigationView
la source
je veux juste ajouter que ci-dessus cette méthode disableShiftMode ajoute également le code ci-dessous. @SuppressLint ("RestrictedApi")
la source
https://android.jlelse.eu/disable-shift-label-animation-from-bottom-navigation-android-b42a25dcbffc
1
2
3
la source
Vous pouvez l'utiliser pour afficher du texte et des icônes sur BottomNevigationView pour 3 à 5 éléments et arrêter le décalage.
Mais vous serez confronté à un problème de coupe de texte long sur BottmNevigationView pour 5 éléments. pour cela, j'ai trouvé une bonne solution pour arrêter le décalage du texte ainsi que des icônes de BottomNevigationView. Vous pouvez également arrêter le déplacement du texte ainsi que des icônes sur BottomNevigationView également. Des instantanés de code sont donnés ici.
1. Ajoutez cette ligne de code dans BottomNevigationView comme indiqué
2. Ajoutez des éléments de menu comme suit: -
3.Ajoutez ce style dans le fichier style.xml:
4) Ajoutez-les dans le dossier Dimen
Je suis l' aide de ces liens et créer un lien .Vous pouvez également obtenir de l' aide get en étudiant ces links.This me aide lot.Hope cela aussi vous aider. Merci....
la source