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:

<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> 

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.
  • Desplácese particular menuItem to top en navigationView cuando onDrawerOpened () llama
  • Ocultar permanentemente la barra de navegación en una actividad
  • ¿Cómo comprobar si el cajón de navegación está abierto?
  • Android: inicia la navegación de Google desde una aplicación
  • Cómo agregar secciones y subheader en el cajón de material android Recyclerview elementos?
  • ¿Hay alguna manera de invocar la navegación desde un navegador móvil?
  • ActionBar Drop Down navegación - el cambio de orientación pone fragmento incorrecto en
  • ¿Cómo comprobar si google.navigation intent / url scheme es compatible desde dentro de una aplicación web?
  • google navigation api para instrucciones de manejo
  • Android: Cajón de navegación en múltiples actividades
  • Mismo cajón de navegación en diferentes actividades
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.