Navegación permanenteVerifique el enfoque suelto después de seleccionar un elemento
Comencé un proyecto con un cajón de navegación de la plantilla básica de Android Studio. La única modificación que hice fue mostrarla como permanente con el fin de tener un diseño de tableta / TV.
Para lograr esto, la única modificación que hice fue en el diseño xml. Esto permite que el NavigationView esté siempre visible.
- OnFocusChange no siempre funciona
- Establecer foco en EditText
- Comportamiento extraño con selectAllOnFocus cuando EditText está en ListView
- Mostrar el teclado automáticamente
- Cambiar el enfoque a EditarTexto Android
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:orientation="horizontal"> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="300dp" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="true" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/app_bar_main" android:layout_width="match_parent" android:layout_height="match_parent" /> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Content will come here" /> </LinearLayout> </LinearLayout>
También puse el proyecto en Github, así que cualquiera puede probarlo.
DEMO DE PROYECTO EN GITHUB
Https://github.com/ChristopheVersieux/NavFocus
QUE ESTA PASANDO
Mi problema se produce cuando empiezo a seleccionar los elementos del cajón con el D-pad. Una vez seleccionado un elemento, el foco se pierde por completo. Tratar de volver al cajón y conseguir el enfoque parece muy difícil y tengo que probar varias veces con flechas derecha / izquierda
LO QUE SE ESPERA:
El cajón debe mantener el enfoque, o el enfoque debe ser fácil de traer de vuelta al cajón.
LO QUE INTENTÉ:
La idea más simple que tuve fue forzar al Cajón a volver a enfocar, pero este código no cambia nada:
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { menuItem.setChecked(true); //This is where I will replace the Fragments in the right area. navigationView.clearFocus(); navigationView.requestFocus(); return true; } });
Muchas gracias por tu ayuda.
- ScrollView deshabilitar el movimiento de enfoque
- Android RequestFocus () Ineficaz
- El enfoque aleatoriamente salta al desplazarse
- Detener ScrollView de establecer el enfoque en EditText
- Android: ¿Para establecer un elemento como seleccionado cuando se abre ListView?
- Cómo hacer que EditText no se enfoque al crear la actividad
- Transferir el enfoque táctil a otra vista
- Android: Force EditText para eliminar el enfoque?
Empezaría por eliminar android:layout_gravity="start"
Esto simplemente no es necesario ya que su padre es un LinearLayout horizontal.
El cajón de navegación debe estar permanentemente visible en las tabletas y en la TV. Ellos permanecen ocultos para móviles. Éstos son parte de las pautas del diseño material.
Esto requiere una configuración bastante diferente en comparación con lo que veo en su proyecto en GitHub. Incluye el suministro de diferentes recursos mediante calificadores.
Este tutorial sobre el cajón de navegación (soporte de diseño) le ayudará con exactamente esa configuración, según las últimas directrices de diseño de materiales. Alternativamente, los archivos del proyecto para el tutorial se pueden encontrar en GitHub .
ACTUALIZACIÓN: Como se ha señalado, la biblioteca de soporte v24 crea problemas con el dpad. Revertir a v23 funciona muy bien.