2010-08-17 39 views
9

Estoy creando un AlertDialog. Estoy usando setView() para establecer una vista personalizada. Esto habilita el tema 'oscuro' en el diálogo (fondo gris, y necesita texto blanco).Tema de luz para AlertDialog?

¿Hay alguna manera de configurar el diálogo para usar el tema "ligero"? Se ve mejor (fondo blanco, texto oscuro).

Gracias

+1

Ver esta respuesta: http://stackoverflow.com/questions/2422562/how-to-change-theme-for-alertdialog – Joe

Respuesta

4

pasos que di:

  • crear una clase que se extiende de diálogo.
  • En onCreate, llame al setContentView (x, y) donde x es su R.layout y y es R.style.popupStyle (consulte a continuación).
  • En su res/values ​​/ style.xml, debe sobrescribir el estilo DialogWindow predeterminado. Intenté solo haciendo un estilo que tiene este como su padre, pero que aún no lo hizo borrar todos los valores predeterminados. Así que revisé el árbol git de Android y obtuve el estilo predeterminado , y simplemente copié y pegué. Esta es la uno

:

<style name="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> 

que obtendrá unos pocos errores, simplemente resolverlos mediante la copia más cosas de la styles.xml oficial de Android y themes.xml archivos.

como referencia: styles.xml y themes.xml.

+0

DialogWindowTitle no pública, debe utilizar:? Androide: attr/windowTitleStyle –

+0

Esto deja una borde blanco alrededor del cuadro de diálogo real, hasta ahora no he encontrado manera de eliminar el borde para que sea transparente, por lo que la sombra del cuadro de diálogo se procesa en el fondo real y no en un borde blanco – John