web-dev-qa-db-fra.com

Modification de la taille de l'icône BottomNavigationView

J'ai expérimenté le nouveau BottomNavigationView et essayé de le personnaliser.

Jusqu'à présent, j'ai réussi à modifier la hauteur et les marges en utilisant ce qui suit:

<dimen name="design_bottom_navigation_height" tools:override="true">75dp</dimen>
<dimen name="design_bottom_navigation_margin" tools:override="true">5dp</dimen>

Je souhaite augmenter la taille des icônes.

Comment cela peut-il être fait?

Compiler la version: com.Android.support:design:25.0.1

13
SitRock

tardif mais récent

Utilisation implementation 'com.Android.support:design:28.0.0' Bibliothèque de support de conception.

Il existe une propriété pour changer la taille de l'icône:

<Android.support.design.widget.BottomNavigationView
    app:itemIconSize="@dimen/_26sdp"
    ....
    ....
</Android.support.design.widget.BottomNavigationView>

par programme:

dashboardNavigation.setItemIconSize(24);

Je vous remercie.

23
Pratik Butani

La taille de l'icône est codée en dur à 24dp dans la disposition des éléments (voir design_bottom_navigation_item.xml ) et peut être modifiée par programme:

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, 32, displayMetrics);
    layoutParams.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, displayMetrics);
    iconView.setLayoutParams(layoutParams);
}
29
ot.

Pour androidx utilisez cet identifiant pour les icônes andcom.google.Android.material.R.id.icon

Le code complet:

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(com.google.Android.material.R.id.icon);
    final ViewGroup.LayoutParams layoutParams = iconView.getLayoutParams();
    final DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
    layoutParams.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, displayMetrics);
    layoutParams.width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 32, displayMetrics);
    iconView.setLayoutParams(layoutParams);
}
0
walkmn