traduccion studio personalizar icono boton barra bar agregar acciones android android-layout

personalizar - menu overflow android studio



¿Qué vista se debe usar para la nueva navegación inferior de diseño de materiales? (3)

Dado que la biblioteca de soporte de Android 25 tiene un BottomNavigationView nativo que es el mismo que se menciona en las pautas de diseño de materiales.
Para comenzar, necesitamos actualizar nuestra dependencia:

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

A continuación, simplemente necesitamos agregar el widget Vista de navegación inferior a nuestro archivo de diseño deseado. Recuerde que esto debe estar alineado con la parte inferior de la pantalla con todo el contenido que se muestra encima. Podemos agregar esta vista así:

<?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: https://medium.com/@hitherejoe/exploring-the-android-design-support-library-bottom-navigation-drawer-548de699e8e0#.bgoj4br93

Esta pregunta ya tiene una respuesta aquí:

Estoy seguro de que todos han escuchado sobre la adición de la navegación inferior a las pautas de diseño de materiales. Estoy planeando agregarlo 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 para mostrar la barra inferior?


Un LinearLayout con pesos iguales para sus vistas, orientación horizontal. Botones en LinearLayout con drawableTop establecido en el icono de elección.

Agréguelo al final:

En FrameLayout o CoordinatorLayout puede agregarlo al final con layout_gravity="bottom" o en un RelativeLayout use android:layout_alignParentBottom="true"

Dimensiones, tamaño de fuente, etc.

Consulte las especificaciones de navegación de la parte inferior del diseño del material sobre los márgenes y los tamaños de fuente, etc.

Altura: 56dp

Icono: 24 x 24dp

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

Relleno:

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

Etiqueta de texto:

  • Roboto Regular 14sp (vista activa)

  • Roboto Regular 12sp (vista inactiva)

Ocultar en desplazamiento

Utilice un CoordinatorLayout de la biblioteca de soporte de diseño de Android. Agregue este LinearLayout como niño en el xml y establezca un Behavior para ocultar en el desplazamiento.

Actualizar

Ahora hay una biblioteca de código abierto disponible que está construida según las especificaciones: https://github.com/roughike/BottomBar

Actualización 2

Ahora es parte del soporte lib .


BottomNavigationView es un componente agregado en la Biblioteca de soporte de Google 25 . Proporciona una navegación rápida entre vistas de nivel superior dentro de una aplicación. Debe usarse 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"/>

Cree un archivo aquí navigation.xml en la carpeta de recursos del menú. Este archivo se utiliza para proporcionar los elementos de menú 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 línea, este código muestra la barra inferior al ejecutar la aplicación. Ahora configuremos el escucha para Click Events OnNavigationItemSelectedListener y OnNavigationItemReselectedListener en los elementos del 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 ocupará más espacio en BottomNavView y parece un poco extraño a partir de ahora, puede ser intencionalmente que Google lo haya mantenido así.

Este comportamiento está definido por la propiedad ShiftingMode de BottomNavigationView, que no se puede deshabilitar de forma directa a partir de ahora, ya que su API no es pública. Pero hay una manera a través de 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 el resultado del código anterior es:

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