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

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

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.

  • Cambiar el teclado Android L introduzca el color de la tecla
  • Datepicker con estilo diferente a la actividad
  • Cómo agregar borde a una ruleta sin afectar su menú emergente
  • Android cómo obtener AppCompat.Translucent tipo de tema con barra de acción de apoyo?
  • Android selector.xml con atributos personalizados lanzando XmlPullParserException
  • Cómo establecer false cancelable a una actividad cuando se abre como un cuadro de diálogo?
  • Obtener el valor de color predeterminado de un "EditText" del tema
  • ¿El panel de vista previa del estudio de Android no representa ActionBar?
  • Error de atributo al cambiar a Diseño de material
  • Cómo dar estilo a ActionaBar Tab texto en Android?
  • ¿El tema de AppCompat DayNight no funciona en Android 6.0?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.