La barra de navegación suave inferior se superpone a mi ListView
Corrí mi aplicación en un Nexus 5 (Android 5), pero me encontré con el problema de que el NavigationBar suave en la parte inferior se superpone el último elemento de mi ListView. He intentado agregar fitsSystemWindows a mi estilo y el ListView pero eso no trabajó.
El XML de mi diseño:
- Desactivar el gesto de desplazamiento que abre el cajón de navegación en android
- Manejo de la prensa trasera al utilizar fragmentos en Android
- Barra de Acción de Android botón de navegación hacia arriba no funciona en los dispositivos
- Restauración del estado del fragmento al cambiar fragmentos a través de la barra de navegación inferior
- android: fitsSystemWindows = "true" tiene problemas con el uso de DrawerLayout y modo inmersivo
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="@color/sf4l" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@id/android:list" android:layout_width="match_parent" android:layout_height="fill_parent" android:layout_weight="1" android:background="@color/sf4l" /> </LinearLayout>
- Repetición de encabezado en la vista de navegación android
- Uso de una ubicación simulada en la aplicación de navegación
- Cómo crear un cajón de navegación Android 5 de altura completa
- Posicionamiento de actionLayout en el cajón de navegación
- Cómo cambiar el tamaño de la navegación ver los elementos del menú y el texto ?? ¿Cómo cambiar el espacio entre el menú?
- Problema al iniciar Google Navigation
- Cómo agregar botones de pie de página en NavigationView
- Navegación de actividades de Android guardar estado
Añada esto a su themes.xml en un directorio valores-v21:
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
Ejemplo (estoy usando AppCompat para las barras de acción):
<style name="Theme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="homeAsUpIndicator">@drawable/new_indicator</item> <item name="android:homeAsUpIndicator">@drawable/new_indicator</item> <item name="actionModeBackground">@android:color/black</item> <item name="android:windowDrawsSystemBarBackgrounds">false</item> </style>
Es porque la altura de su listView es igual a la altura de pantalla completa, pero la barra de acción empuja el diseño de píxeles pocos lo que hace que la superposición de diseño por los botones de navegación.
Esto también sucede si tiene un contenedor de fragmentos de pantalla completa bajo barra de acción.
El arreglo para esto es medir la altura de la pantalla y de la barra de acción, y después fijar la altura de su opinión del padre a su diferencia. Ejemplo:
@Override public void onWindowFocusChanged (boolean hasFocus) { LinearLayout lMain = (LinearLayout) findViewById(R.id.lMain); lMain.getLayoutParams().height = lMain.getHeight() - getNavigationBarHeight(); }
- Usted tiene que hacer esto después de la disposición ya está dibujada / rendida. En onCreate o onResume es demasiado pronto. Hacerlo en onWindowFocusChanged () es quizás un poco exagerado pero funciona.
- Retrofit SocketTimeOutException al enviar datos multipartidarios o JSON en android
- Diferentes elementos (dinámicos) de altura en GridLayoutManager