J'utilise le style de navigation de mise en page inférieure dans Android qui a été récemment introduit par google dans la bibliothèque de conception 25. Dans tous les tutoriels et questions que je vois, les images dans leurs icônes sont de taille normale, mais les miennes sont très petites, malgré le fait que l'image que je sauvegarde dans un dossier dessinable soit de 72 x 72. Voici une capture d'écran:
Les icônes doivent avoir au moins 2, voire 3 fois cette taille. Comment puis-je le faire? Voici mon code dans mon bottom_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto">
<item
Android:id="@+id/menu_home"
Android:title="test"
Android:icon="@drawable/tabbarglossary"
app:showAsAction="always|withText"
/>
<item
Android:id="@+id/menu_search"
Android:title="test2"
Android:icon="@drawable/mediationtabbar"
app:showAsAction="always|withText"
/>
<item
Android:id="@+id/menu_notifications"
Android:title="test3"
Android:icon="@drawable/ic_action_name"
app:showAsAction="always|withText"
/>
</menu>
et dans mon activity_main.xml:
<Android.support.design.widget.BottomNavigationView
Android:id="@+id/navigation"
Android:layout_width="match_parent"
Android:layout_height="80dp"
Android:layout_alignParentBottom="true"
Android:layout_gravity="bottom"
Android:layout_marginBottom="0dp"
Android:layout_marginLeft="0dp"
Android:layout_marginRight="0dp"
Android:focusable="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
design:menu="@menu/bottom_layout" />
Merci
La taille de l'icône est codée en dur à 24dp dans la disposition des éléments (voir design_bottom_navigation_item.xml ) Cela peut être modifié par programme:
BottomNavigationView bottomNavigationView = (BottomNavigationView) activity.findViewById(R.id.bottom_navigation_view);
BottomNavigationMenuView menuView = (BottomNavigationMenuView) bottomNavigationView.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++) {
final View iconView = menuView.getChildAt(i).findViewById(Android.support.design.R.id.icon);
final ViewGroup.LayoutParams layoutParams = iconView.getLayoutParams();
final DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
// set your height here
layoutParams.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, displayMetrics);
// set your width here
layoutParams.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, displayMetrics);
iconView.setLayoutParams(layoutParams);
}
[~ # ~] modifier [~ # ~]
Pour votre problème que l'icône couvre votre texte:
Vous pouvez remplacer certaines dimensions par défaut de la vue de navigation inférieure. Par exemple la hauteur.
<dimen name="design_bottom_navigation_height" tools:override="true">56dp</dimen>
Vérifiez directives de navigation en bas pour les spécifications par défaut.
ensemble app:itemIconSize
propriété avec votre valeur préférée.
J'essaierais d'utiliser Android Asset Studio à générer une icône générique pour vous, assurez-vous que:
Remarque : vous pouvez utiliser une icône personnalisée si vous le souhaitez.
Il vous générera alors le dessinable correspondant avec le répertoire correct (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi).
Avoir des dimensions statiques pouvant être dessinées telles que 72x72 dans votre cas peut changer la taille de l'icône en fonction de la densité de votre téléphone, différents téléphones traduiront les pixels différemment.
Téléchargez simplement les icônes dans un fichier Zip et extrayez les dossiers dessinables dans votre répertoire de ressources, cela devrait résoudre votre problème.
Ici:
BottomNavigationView bottomNavigationView = (BottomNavigationView)
configurationActivity.findViewById(R.id.bottom_navigation_view);
BottomNavigationMenuView menuView = (BottomNavigationMenuView)
bottomNavigationView.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++) {
final View iconView =
menuView.getChildAt(i).findViewById(Android.support.design.R.id.icon);
final ViewGroup.LayoutParams layoutParams =
iconView.getLayoutParams();
final DisplayMetrics displayMetrics =
getResources().getDisplayMetrics();
layoutParams.height = (int)
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20,
displayMetrics);
layoutParams.width = (int)
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20,
displayMetrics);
iconView.setLayoutParams(layoutParams);
}
vous pouvez ajuster la taille des images comme vous le souhaitez. Happy Coding
Ajoutez ces deux lignes à votre navigation inférieure:
app:menu="@menu/main_bottom_navigation"
app:itemIconSize="@dimen/bottom_navigation_icon_size"
Dans dimens.xml
ajouter:
<dimen name="bottom_navigation_icon_size" tools:override="true">32dp</dimen>
<dimen name="design_bottom_navigation_height" tools:override="true">72dp</dimen>
Pour augmenter la taille des icônes, augmentez bottom_navigation_icon_size
. Vous devrez peut-être modifier la valeur de design_bottom_navigation_height
afin que le texte ne se chevauche pas ou que vous obteniez trop d'espace blanc.
remplacer dans dimens.xml:
<dimen name="design_bottom_navigation_icon_size" tools:override="true">'your size in dp'</dimen>