ActionBarSherlock no admite cuadros de diálogo de alerta de luz-tema?
Bueno, como dice el título, estoy usando la biblioteca actionBarSherlock y un tema ligero, ya veces necesito mostrar un diálogo usando la clase alertDialog.Builder.
La cosa es, no importa lo que intente, el tema no se aplica al diálogo en sí. El tema debería funcionar tanto en las nuevas API como en las antiguas (antes del nido de abeja).
- Actividad translúcida llenando toda la pantalla
- Establecer colores predeterminados en la biblioteca de Android
- Grueso ProgressBar de color naranja en lugar de azul delgado
- Cómo utilizar SearchView de tema oscuro en el tema Light Appcompat
- Tema no aplicado con la biblioteca appcompat en algunos dispositivos Android 4.X
ejemplo:
código:
final AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.AppTheme_LightDialog));
o:
final AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.Theme_Sherlock_Light_Dialog));
Xml:
<style name="AppTheme_LightDialog" parent="@android:style/Theme.Light"> <item name="android:windowFrame">@null</item> <item name="android:windowTitleStyle">@style/DialogWindowTitle.Sherlock.Light</item> <item name="android:windowBackground">@drawable/abs__dialog_full_holo_light</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> <item name="android:windowActionBar">false</item> <item name="android:windowActionModeOverlay">true</item> <item name="android:windowCloseOnTouchOutside">true</item> <item name="android:windowNoTitle">true</item> <item name="android:backgroundDimAmount">0.6</item> <item name="android:colorBackgroundCacheHint">@null</item> <item name="android:textColorPrimary">@color/abs__primary_text_holo_light</item> <item name="android:textColorPrimaryInverse">@color/abs__primary_text_holo_dark</item> <item name="windowMinWidthMajor">@dimen/abs__dialog_min_width_major</item> <item name="windowMinWidthMinor">@dimen/abs__dialog_min_width_minor</item> <item name="windowActionBar">false</item> <item name="windowContentOverlay">@null</item> <item name="android:textAppearance">?android:attr/textAppearanceInverse</item> </style>
Sé que puedo usar el diálogoFragmento, pero ¿hay otra manera? Los diálogos son bastante sencillos, y como hay muchos de ellos, sería molesto cambiarlos todos.
EDIT: Puedo estar equivocado, pero parece que el uso del atributo android: alertDialogStyle (mostrado aquí ) lo cambia para las API antiguas, pero no tiene mucha personalización. De hecho, sólo soporta colores, y no estoy seguro de cómo establecer incluso el color del texto (del título y / o el mensaje).
- Holo rápido desplazamiento ver en los dispositivos antiguos
- Uso de estilos privados (No se encontró ningún recurso que coincida con el nombre dado)
- El estilo de Android Holo Light cambia dependiendo del contexto elegido
- Línea negra extraña sobre DialogFragment AlertDialog
- Orden de render incorrecto para el botón cuando se aplica el tema material
- Android: la barra de acciones no aparece con Theme.AppCompat
- Mezcla de holo light y holo dark EditarTexto en tema
- Selector de textColor de Android
Después de investigar un poco, creo que no es un problema de ActionBarScherlock, sino un tema Light Theme en diálogos de alerta. Vamos a probar algunas cosas:
Utilizar:
final AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.AppTheme_LightDialog));
Cambio:
<style name="AppTheme_LightDialog" parent="@android:style/Theme.Light">
A:
<style name="AppTheme_LightDialog" parent="@android:style/Theme.Dialog">
A continuación, reemplaza los estilos predeterminados "Theme.Dialog" (copiado del árbol git de Android):
<style name="AppTheme_LightDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowTitleStyle">@android:style/DialogWindowTitle</item> <item name="android:windowBackground">@android:drawable/panel_background</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> </style>
Puede que necesite copiar los recursos originales (@android: style / DialogWindowTitle, @android: style / Animation.Dialog y @android: drawable / panel_background) en su proyecto.
Y finalmente, la parte difícil ( de Shawn Castrianni ), ya que parece que Android necesita alguna ayuda adicional para aplicar correctamente un estilo al texto de AlertDialog. Añade a tu estilo "AppTheme_LightDialog":
<item name="android:textColor">?android:attr/textColorPrimaryInverseDisableOnly</item>
ACTUALIZAR:
Parece que antes del estilo de texto Honeycomb no se aplica realmente a AlertDialogs. El código anterior le da una solución a> = dispositivos Honeycomb. Hay un trabajo interesante alrededor para hacer que funcione también en esos dispositivos (compruebe esto y esto ), pero es posible que desee empezar a preguntar si usted prefiere un enfoque diferente que requiere menos trabajo.
Por cierto, no estoy seguro de si es tu caso, pero es importante que también utilice el mismo ContextThemeWrapper si inflar un diseño personalizado para el AlertDialog. Por ejemplo,
Cambio:
View view = View.inflate(activity, R.layout.myDialog, null);
A:
View view = View.inflate(new ContextThemeWrapper(activity, R.style.AppTheme_LightDialog), R.layout.myDialog, null);
Esto es lo que hice y que hizo el cuerpo del diálogo blanco. El título está todavía sobre un fondo negro:
new AlertDialog.Builder( new ContextThemeWrapper( activity, R.style.Theme_Sherlock_Light));
También intenté Theme_Sherlock_Light_NoActionBar
, pero no parece hacer ninguna diferencia.
- Reconocimiento de imágenes – Descriptor binario representación en Mat – OpenCV Android
- Trabajar con imágenes en el desarrollo de aplicaciones para Android