¿Cómo mostrar una Actividad de ActionBarCompat como un diálogo que establece su tema en AndroidManifest.xml?

La documentación para desarrolladores de Android describe cómo configurar un tema de Dialog para una Activity :

Sugerencia: Si desea un diálogo personalizado, puede mostrar una Activity como un diálogo en lugar de utilizar las API de Dialog . Simplemente cree una actividad y establezca su tema en Theme.Holo.Dialog en el elemento manifesto <activity> :

<activity android:theme="@android:style/Theme.Holo.Dialog" >

Eso es. La actividad ahora se muestra en una ventana de diálogo en lugar de en pantalla completa.

Estoy intentando hacer esto para una aplicación que utilice ActionBarCompat . He estado intentando diferentes temas como …

 android:theme="@android:style/Theme.Dialog" android:theme="@style/Theme.AppCompat.Base.CompactMenu.Dialog" android:theme="@style/Theme.AppCompat.CompactMenu.Dialog" 

Sin embargo ninguno de ellos parece funcionar ya que termino con el mismo mensaje de error:

Java.lang.IllegalStateException: Necesita utilizar un tema Theme.AppCompat (o descendente) con esta actividad.

Acaba de golpear el mismo problema el otro día la conversión de ActionBarSherlock 4.2.0 (que tiene un tema de diálogo especial eliminado en versiones posteriores, porque no tiene mucho que ver con ActionBar realmente …).

Sin embargo, me inspiré en ello y creé un tema para las API más antiguas:

 res\values\styles.xml <style name="AppTheme.Dialog" parent="android:Theme.Light"> <item name="android:windowNoTitle">true</item> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowBackground">@drawable/dialog_full_holo_light</item> <item name="android:maxWidth">600dp</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> </style> 

Mientras utiliza el tema del diálogo Holo real para APIs posteriores:

 res\values-v11\styles.xml <style name="AppTheme.Dialog" parent="android:Theme.Holo.Light.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:windowCloseOnTouchOutside">true</item> </style> 

Finalmente tuve que usar una Actividad simple para evitar la excepción que recibiste, además de otra en la que ActionBarView comprueba que es ancho / alto.

Usted puede leer mi blog, con un enlace al código fuente completo al final: http://dandar3.blogspot.com/2013/12/actionbarcompat-dialog-activity.html

  • Color de fondo personalizado para el elemento seleccionado con "activatedBackgroundIndicator" Navigation Drawer
  • Aplicación de tema transparente a la actividad: no se ajusta a pantalla completa en dispositivo
  • Cómo cambiar el color de la barra de herramientas de selección de texto que viene cuando copiamos un texto?
  • Android: ¿Cómo cambiar el color de texto de ProgressDialog?
  • Obtener el valor de tema aplicado para una actividad mediante programación
  • AS editor de temas no se muestra la vista previa
  • No se puede crear alertDialog en ActionBarActivity
  • Procesando problemas al cambiar el tema
  • actionBarSherlock subtítulo textSize
  • Programáticamente set android: windowIsTranslucent
  • Cómo establecer false cancelable a una actividad cuando se abre como un cuadro de diálogo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.