Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Qué vista se debe utilizar para el nuevo diseño del material?

Estoy seguro de que todos ustedes han oído hablar de la adición de la navegación inferior a las directrices de diseño de materiales. Estoy pensando en añadirlo a mi aplicación. Sin embargo, no estoy seguro de cuál es la mejor manera de abordarlo. ¿Qué tipo de vista sería mejor mostrar la barra inferior?

3 Solutions collect form web for “¿Qué vista se debe utilizar para el nuevo diseño del material?”

BottomNavigationView es un componente agregado en la Biblioteca de asistencia de Google 25 . Proporciona una navegación rápida entre las vistas de nivel superior dentro de una aplicación. Debe utilizarse cuando la aplicación tiene de tres a cinco destinos de nivel superior. Mi implementación incluye el cambio entre Fragmentos al seleccionar los elementos del menú.

Agregue al build.gradle de su módulo de proyecto

compile'com.android.support:design:25.3.1' 

Cree BottomNavigationView en xml de su diseño y proporcione un recurso de menú:

 <android.support.design.widget.BottomNavigationView android:id="@+id/navigation" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="0dp" android:layout_marginStart="0dp" android:background="?android:attr/windowBackground" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"/> 

Crear un archivo aquí navigation.xml en la carpeta de recursos del menú. Este archivo se utiliza para proporcionar el MenuItems en BottomNavigationView

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/navigation_home" android:icon="@drawable/ic_home_black_24dp" android:title="@string/title_home" /> <item android:id="@+id/navigation_dashboard" android:icon="@drawable/ic_dashboard_black_24dp" android:title="@string/title_dashboard" /> <item android:id="@+id/navigation_notifications" android:icon="@drawable/ic_notifications_black_24dp" android:title="@string/title_notifications" /> <item android:id="@+id/navigation_settings" android:icon="@drawable/ic_settings_black_24dp" android:title="@string/title_settings" /> </menu> 

Con todo en la línea de este código mucho muestra la BottomBar en el funcionamiento de la aplicación. Ahora permite establecer el oyente para los eventos de clic OnNavigationItemSelectedListener y OnNavigationItemReselectedListener en elementos de menú –

 private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.navigation_home: return true; case R.id.navigation_dashboard: return true; case R.id.navigation_notifications: return true; case R.id.navigation_settings: return true; } return true; } }; private BottomNavigationView.OnNavigationItemReselectedListener mOnNavigationItemReselectedListener = new BottomNavigationView.OnNavigationItemReselectedListener() { @Override public void onNavigationItemReselected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.navigation_home: Log.d(TAG, "Navigation Reselected ==="); break; case R.id.navigation_dashboard: Log.d(TAG, "Dashboard Reselected ==="); break; case R.id.navigation_notifications: Log.d(TAG, "Notification Reselected ==="); break; case R.id.navigation_settings: Log.d(TAG, "Settings Reselected ==="); break; } } }; bottomNavigationView.setOnNavigationItemSelectedListener (mOnNavigationItemSelectedListener); bottomNavigationView.setOnNavigationItemReselectedListener (mOnNavigationItemReselectedListener); 

Si el número de elementos del menú es superior a 3, el elemento seleccionado tardará más espacio en BottomNavView y parecerá un poco raro a partir de ahora. Puede que Google lo haya mantenido así.

Introduzca aquí la descripción de la imagen

Este comportamiento se define por la propiedad ShiftingMode de BottomNavigationView, que no se puede desactivar de una manera sencilla a partir de ahora, ya que su api no es pública. Pero hay un camino a través de la reflexión para hacerlo:

 BottomNavigationMenuView menuView = (BottomNavigationMenuView) btmNavigationView.getChildAt(0); try { Field shiftingMode = menuView.getClass() .getDeclaredField("mShiftingMode"); shiftingMode.setAccessible(true); shiftingMode.setBoolean(menuView, false); shiftingMode.setAccessible(false); for (int i = 0; i < menuView.getChildCount(); i++) { BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i); item.setShiftingMode(false); //To update view, set the checked value again item.setChecked(item.getItemData().isChecked()); } } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } 

Después de llamar al código anterior, el resultado es:

Introduzca aquí la descripción de la imagen

Para obtener más información, consulte mi proyecto Github: https://github.com/pmahsky/BottomNavigationViewDemo

Un LinearLayout con pesos iguales para sus vistas, orientación horizontal. Los botones del LinearLayout con drawableTop se ajustan al icono de elección.

Añadir a la parte inferior:

En FrameLayout o CoordinatorLayout puedes añadirlo a la parte inferior con layout_gravity="bottom" o en un uso de RelativeLayout android:layout_alignParentBottom="true"

Dimensiones, tamaño de letra etc:

Refiera por favor a las especificaciones de navegación del fondo del diseño material sobre él para los márgenes y los tamaños etc de la fuente:

Altura: 56dp

Icono: 24 x 24 ppp

Alineación del contenido:
El texto y el icono están centrados horizontalmente dentro de la vista.

Relleno:

  • 6dp encima del icono (vista activa), 8dp encima del icono (vista inactiva)
  • 10dp bajo texto
  • 12dp izquierda y derecha del texto

Etiqueta del texto:

  • Roboto Regular 14sp (vista activa)

  • Roboto Regular 12sp (vista inactiva)

Ocultar en el desplazamiento

Utilice un CoordinatorLayout de la biblioteca de soporte de diseño de android. Añadir este LinearLayout como un niño en el xml y establecer un Comportamiento a para ocultar en el desplazamiento.


Actualizar

Ahora hay una biblioteca de código abierto disponible que se construye a las especificaciones: https://github.com/roughike/BottomBar

Actualización 2

Ahora es parte de la lib de soporte .

Desde la biblioteca de soporte de android 25 tiene un BottomNavigationView nativo que es el mismo que se menciona en las directrices de diseño de material.
Para empezar necesitamos actualizar nuestra dependencia:

 compile 'com.android.support:design:25.0.0' 

A continuación, simplemente tenemos que añadir el widget Bottom Navigation View a nuestro archivo de diseño deseado. Recuerde que esto debe alinearse con la parte inferior de la pantalla con todo el contenido que se muestra encima de él. Podemos agregar esta vista de la siguiente manera:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.BottomNavigationView android:id="@+id/bottom_navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" app:itemBackground="@color/colorPrimary" app:itemIconTint="@color/white" app:itemTextColor="@color/white" app:menu="@menu/bottom_navigation_main" /> </RelativeLayout> 

Para un artículo más detallado, visite este: https://medium.com/@hitherejoe/exploring-the-android-design-support-library-bottom-navigation-drawer-548de699e8e0#.bgoj4br93

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.