2010-08-17 7 views
9

Je crée un AlertDialog. J'utilise setView() pour définir une vue personnalisée. Cela active le thème "sombre" dans la boîte de dialogue (arrière-plan gris, et nécessite un texte blanc).Thème de lumière pour AlertDialog?

Existe-t-il un moyen de définir la boîte de dialogue pour utiliser le thème 'light'? Il semble plus agréable (fond blanc, texte sombre).

Merci

+1

Voir cette réponse: http://stackoverflow.com/questions/2422562/how-to-change-theme-for-alertdialog – Joe

Répondre

4

étapes de mon travail:

  • créer une classe extension de dialogue.
  • Dans la commande onCreate, appelez setContentView (x, y) avec x étant votre R.layout et y étant R.style.popupStyle (voir ci-dessous).
  • Dans votre res/values ​​/ style.xml, vous devez remplacer le style par défaut DialogWindow. J'ai essayé juste faire un style qui a celui-ci comme son parent, mais qui n'a toujours pas effacer tous les défauts. J'ai donc vérifié l'arbre git Android et obtenu le style par défaut , et juste copié-collé. Ce est celui

:

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

Vous obtiendrez quelques erreurs, il suffit de les résoudre en copiant plus de choses dans le styles.xml officiel Android et themes.xml fichiers.

pour la référence: styles.xml et themes.xml.

+0

DialogWindowTitle ne sont pas publiques, devraient utiliser: Android: attr/windowTitleStyle –

+0

Cela laisse une bordure blanche autour de la boîte de dialogue proprement dite, jusqu'à présent, je n'ai trouvé aucun moyen de supprimer la bordure pour qu'elle soit transparente, de sorte que l'ombre de la boîte de dialogue est réellement rendue sur le fond réel et non sur une bordure blanche – John