Dialog en Android KitKat parece estar cortado

He utilizado el tema de diálogo para una actividad y funciona bien en Android <= 4,3, pero no en el último KitKat 4.4. Aquí hay una captura de pantalla del problema:

dialog android 4.4 problem

Falta la parte superior del diseño. Puedes ver que los límites parecen ser cortados.

Estoy usando un emulador de Android para probar la aplicación, así que no sé si el problema se debe a la máquina virtual o debido a alguna otra razón.

Puede resolver el problema que se va a cortar desde el código inferior.

dialog.getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

Debe extender el cuadro de diálogo y en la llamada onCreate el método siguiente:

 @TargetApi(14) public void toggleHideBar() { if (Build.VERSION.SDK_INT < 18) { return; } // The UI options currently enabled are represented by a bitfield. // getSystemUiVisibility() gives us that bitfield. int uiOptions = getWindow().getDecorView().getSystemUiVisibility(); int newUiOptions = uiOptions; boolean isImmersiveModeEnabled = ((uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) == uiOptions); if (isImmersiveModeEnabled) { Log.d("dialog", "Turning immersive mode mode off."); } else { Log.d("dialog", "Turning immersive mode mode on."); } // Status bar hiding: Backwards compatible to Jellybean if (Build.VERSION.SDK_INT >= 16 && (newUiOptions & View.SYSTEM_UI_FLAG_FULLSCREEN) <= 0) { newUiOptions ^= View.SYSTEM_UI_FLAG_FULLSCREEN; } // Immersive mode: Backward compatible to KitKat. // Note that this flag doesn't do anything by itself, it only augments the behavior // of HIDE_NAVIGATION and FLAG_FULLSCREEN. For the purposes of this sample // all three flags are being toggled together. // Note that there are two immersive mode UI flags, one of which is referred to as "sticky". // Sticky immersive mode differs in that it makes the navigation and status bars // semi-transparent, and the UI flag does not get cleared when the user interacts with // the screen. if (Build.VERSION.SDK_INT >= 18 && (newUiOptions & View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) <= 0) { newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; } getWindow().getDecorView().setSystemUiVisibility(newUiOptions); } 

Finalmente, intenté hacer algo con el nuevo modo FullScreen Immersive disponible en Android 4.4. Android FullScreen

Sólo tienes que poner esto en el onResume de la actividad de "diálogo" , y que te permiten usar diálogos en una actividad de pantalla completa, sin el corte superior 🙂

Edit: Se agregó una comprobación de compatibilidad para la versión de destino, setSystemUiVisibility se implementa en Api 11, pero parece que necesita ese "parche" sólo para Android 4.4)

 // Only for Api >=4.0 if (android.os.Build.VERSION.SDK_INT >= 16) { int mUIFlag = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION // I removed this | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; // and this to keep the navigation bar getWindow().getDecorView().setSystemUiVisibility(mUIFlag); } 

Tengo un problema similar, pero con usar un diálogo de encargo. Desafortunadamente, no pude publicar mi captura de pantalla aquí.

He probado con algunas opciones diferentes, y parece que ejecutar la actividad de los padres en modo de pantalla completa afecta esto. Si elimino el código siguiente, el diálogo parece funcionar bien.

 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 

Me di cuenta de esto después de obtener la actualización 4.4 KitKat en un Google Nexus 7 (primera versión). Además, no parece hacer una diferencia si tengo presente el título del diálogo o no.

Simplemente agregue esta línea de código al método onCreate de su actividad.

GetWindow (). SetFlags (0x04000000, 0x04000000); // FLAG_TRANSLUCENT_STATUS

Tuve el mismo problema que usted describe y mostrar en sus capturas de pantalla. El problema sólo ocurrió en KitKat.

En mi caso sucedió en algunos diálogos emergentes que utilizaron un estilo de encargo. A continuación se muestra un estilo que reproduce el problema cuando se aplica a un diálogo. Observe la primera línea, que tiene el atributo parent = "android.Theme" , al eliminar ese atributo se resolvió el problema.

 <style name="transparent_low_dim" parent="android:Theme"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:backgroundDimAmount">0.3</item> <item name="android:windowAnimationStyle">@null</item> </style> 

Para arreglarlo he eliminado el atributo padre para que la primera línea se vería ahora como el siguiente:

 <style name="transparent_low_dim"> 
  • Establecer la alarma de Android 4.4 Kitkat
  • Android MediaPlayer Live Streaming detiene después de aproximadamente 1 minuto en Samsung Galaxy S4 y S5
  • Establecer el modo de pantalla completa inmersiva de Android en el manifiesto
  • Cómo enviar un SMS en Android Kitkat desde la aplicación no predeterminada sin escribir a SMS Provider
  • ¿Existe una API para la nueva característica de Android Kitkat (4.4) de la función de identificación de llamadas?
  • Marcación de mensajes SMS como mensajes de lectura / no leídos o eliminación de mensajes que no funcionan en KitKat
  • Nexus 5 (Kitkat 4.4) no autorizará mi equipo con Windows 8
  • Comprobar si la aplicación está en segundo plano
  • Establecer la configuración del bloqueo de pantalla interactivamente
  • Problemas con android-ffmpeg en Android Lollipop
  • Problemas de compatibilidad de interfaz de usuario entre diferentes versiones de API
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.