Eliminar etiquetas BottomNavigationView
Google lanzó nueva biblioteca de soporte v25 con BottomNavigationView
- Cómo deshabilitar BottomNavigationView modo de cambio?
- Cambio de color de fondo en BottomNavigationView
- Cambiar el tamaño del icono de BottomNavigationView
- Establecer el ítem / id de elementos inicialmente seleccionado en BottomNavigationView
- Insignia en BottomNavigationView
¿Hay alguna manera de quitar las etiquetas de los artículos?
- Cómo eliminar la animación de iconos para la vista de navegación inferior en android
- Quitar el modo de animación / desplazamiento de BottomNavigationView android
- Fragmento creado de nuevo en la parte inferior de la vista de navegación seleccionada
- Restauración del estado del fragmento al cambiar fragmentos a través de la barra de navegación inferior
- Cómo ocultar el BottomNavigationView debajo del teclado con el conjunto adjustResize
- BottomNavigationView - Sombra y efecto de ondulación
- ¿Cómo puedo añadir elevación (sombra) a mi BottomNavigationView. No viene por defecto
- Navegación inferior Ver resaltar elemento seleccionado
¿Quieres este estilo?
Si es así, te recomiendo que intentes BottomNavigationViewEx .
Desafortunadamente esta primera versión de BottomNavigationView vino con muchas limitaciones. Y por ahora no puede quitar los títulos sólo con el API de diseño de soporte técnico. Así que para solucionar esta limitación mientras google no la implementa, puedes hacer (usando reflexión):
1. Establezca los títulos vacíos desde el archivo bottom_navigation_menu.xml.
2. Extiende el BottomNavigationView:
public class MyBottomNavigationView extends BottomNavigationView { public MyBottomNavigationView(Context context, AttributeSet attrs) { super(context, attrs); centerMenuIcon(); } private void centerMenuIcon() { BottomNavigationMenuView menuView = getBottomMenuView(); if (menuView != null) { for (int i = 0; i < menuView.getChildCount(); i++) { BottomNavigationItemView menuItemView = (BottomNavigationItemView) menuView.getChildAt(i); AppCompatImageView icon = (AppCompatImageView) menuItemView.getChildAt(0); FrameLayout.LayoutParams params = (LayoutParams) icon.getLayoutParams(); params.gravity = Gravity.CENTER; menuItemView.setShiftingMode(true); } } } private BottomNavigationMenuView getBottomMenuView() { Object menuView = null; try { Field field = BottomNavigationView.class.getDeclaredField("mMenuView"); field.setAccessible(true); menuView = field.get(this); } catch (NoSuchFieldException | IllegalAccessException e) { e.printStackTrace(); } return (BottomNavigationMenuView) menuView; } }
3. Agregue al layout.xml este customView
Para más detalles lo he implementado en Github
Enfoque sin reflexión:
private void removeTextLabel(@NonNull BottomNavigationView bottomNavigationView, @IdRes int menuItemId) { View view = bottomNavigationView.findViewById(menuItemId); if (view == null) return; if (view instanceof MenuView.ItemView) { ViewGroup viewGroup = (ViewGroup) view; int padding = 0; for (int i = 0; i < viewGroup.getChildCount(); i++) { View v = viewGroup.getChildAt(i); if (v instanceof ViewGroup) { padding = v.getHeight(); viewGroup.removeViewAt(i); } } viewGroup.setPadding(view.getPaddingLeft(), (viewGroup.getPaddingTop() + padding) / 2, view.getPaddingRight(), view.getPaddingBottom()); } }
Esta es una solución temporal. Simplemente agrega: app:itemTextColor="@android:color/transparent"
Eso hará que sea lo que sea el color de fondo es, apareciendo deshabilitado. Hace que el icono se vea elevado.
Yo recomendaría implementarlo por usted mismo como sanf0rd dio en su respuesta . Pero AppCompatImageView
no funciona para mí. Lo he cambiado a ImageView
. Y cambió getChildAt
a findViewById
.
También ocultar todas las etiquetas de los elementos no seleccionados.
private void centerMenuIcon() { BottomNavigationMenuView menuView = getBottomMenuView(); if (menuView != null) { for (int i = 0; i < menuView.getChildCount(); i++) { BottomNavigationItemView menuItemView = (BottomNavigationItemView) menuView.getChildAt(i); TextView smallText = (TextView) menuItemView.findViewById(R.id.smallLabel); smallText.setVisibility(View.INVISIBLE); //TextView largeText = (TextView) menuItemView.findViewById(R.id.largeLabel); ImageView icon = (ImageView) menuItemView.findViewById(R.id.icon); FrameLayout.LayoutParams params = (LayoutParams) icon.getLayoutParams(); params.gravity = Gravity.CENTER; menuItemView.setShiftingMode(true); } } }