web-dev-qa-db-fra.com

Comment augmenter la taille de l'icône dans Android disposition de navigation inférieure?

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:

enter image description here

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

14
joey

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.

29
beeb

ensemble app:itemIconSize propriété avec votre valeur préférée.

14
Jonatan

J'essaierais d'utiliser Android Asset Studio à générer une icône générique pour vous, assurez-vous que:

  • La taille de l'icône est de 24dp
  • Il a un remplissage de 0dp

Remarque : vous pouvez utiliser une icône personnalisée si vous le souhaitez.

icon generator

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.

6
Bradley Wilson

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

3
Minkoo

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.

1
Dan Bray

remplacer dans dimens.xml:

<dimen name="design_bottom_navigation_icon_size" tools:override="true">'your size in dp'</dimen>
1
Evgeniy Pavlov