¿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 deDialog
. Simplemente cree una actividad y establezca su tema enTheme.Holo.Dialog
en el elemento manifesto<activity>
:
- El fondo personalizado para activateBackgroundIndicator en ActionBarSherlock no funciona
- ¿El tema de AppCompat DayNight no funciona en Android 6.0?
- Tema de un selector dibujable en pre-Lollipop
- ¿El panel de vista previa del estudio de Android no representa ActionBar?
- Aplicación de un tema a v7 Support Action Bar
<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.
- Error: El atributo "theme" ya ha sido definido
- ¿Por qué un botón pierde su comportamiento original después de cambiar su color?
- Android: ¿cómo usar los colores del tema actual en un xml extraíble?
- Android Action Bar: Cambiar el color de los botones de acción
- Cambio de fondo y color de texto de AppCompat Light DarkActionBar Theme en android
- Cambiar el color de la ventana de inicio de la aplicación
- Barra de herramientas Sugerencias de búsqueda
- WindowBackground no cambia con el tema
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
- View.getId () devolviendo ID incorrecto en OnItemClickListener
- Mostrar sólo las pestañas con actionBarSherlock