He estado experimentando con el nuevo BottomNavigationView e intentando personalizarlo.

Hasta ahora he logrado cambiar la altura y los márgenes usando lo siguiente:

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

Quiero aumentar el tamaño de los íconos.

¿Cómo se puede hacer esto?

Versión de compilación: com.android.support:design:25.0.1

13
Steve Cortis 7 ene. 2017 a las 03:38

4 respuestas

La mejor respuesta

Tarde pero más reciente

Utilice implementation 'com.android.support:design:28.0.0' Biblioteca de soporte de diseño.

Hay una propiedad para cambiar el tamaño del icono:

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

Programáticamente:

dashboardNavigation.setItemIconSize(24);

Actualizar:

Si está utilizando una biblioteca de materiales, será lo mismo. Simplemente cambie el nombre del paquete como se muestra a continuación.

implementation 'com.google.android.material:material:1.1.0'

XML:

<com.google.android.material.bottomnavigation.BottomNavigationView
                app:itemIconSize="@dimen/_26sdp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

Programáticamente : igual que el anterior.

Gracias.

34
Pratik Butani 25 feb. 2020 a las 04:53

El tamaño del ícono está codificado a 24dp en el diseño del elemento (consulte design_bottom_navigation_item.xml) y se puede cambiar mediante programación:

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);
}
31
ot. 25 ene. 2017 a las 07:49

Esto funcionó perfectamente para mí con AndroidX Su diseño XML

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/nav_view"
    style="@style/DA_Bottom_Nav"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="0dp"
    android:layout_marginEnd="0dp"
    app:itemIconSize="50dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:menu="@menu/nav_menu"/>

Res / values / dimens.xml

<resources xmlns:tools="http://schemas.android.com/tools">
    <dimen name="design_bottom_navigation_height" tools:override="true">80dp</dimen>
</resources>
0
user2288580 22 abr. 2020 a las 07:46

Para androidx use esta identificación para iconos andcom.google.android.material.R.id.icon

El código completo:

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 26 dic. 2019 a las 12:32