J'essaie de définir le thème Android Theme.Light pour mon dialogue d'alerte, mais sans succès jusqu'à présent. Après avoir lu quelques tutoriels, j'ai compris qu'en utilisant AlertDialog.Builder nous ne pouvons pas définir le thème directement dans le constructeur (du moins dans l'API de niveau 7).
La solution alternative que j'ai trouvée utilise un ContextThemeWrapper , que tout le monde a assuré que cela résoudrait mon problème. Alors j'ai codé quelque chose comme ça:
AlertDialog.Builder builder = new AlertDialog.Builder(
new ContextThemeWrapper(context, R.style.popup_theme));
J'ai décrit mon thème dans le dossier de valeurs:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="back_color">#ffffffff</color>
<style name="popup_theme" parent="@Android:style/Theme.Light">
<item name="Android:windowBackground">@color/back_color</item>
<item name="Android:colorBackground">@color/back_color</item>
</style>
Malheureusement, je reçois toujours la valeur par défaut Theme.Dialog.Alert theme. Quelqu'un peut-il me dire pourquoi? Où vais-je mal?
EDIT: Si vous ne connaissez pas la réponse à ma question, veuillez voter. J'ai la mauvaise habitude de poser des questions qui restent bloquées :(
remplacez parent="Android:Theme.Light"
par parent="@Android:style/Theme.Light"
Cela m'a pris un certain temps à comprendre aussi.
La question à l’étude est que Theme.Light et Theme.Holo.Light et autres sont conçus autour de l’activité. Un thème de boîte de dialogue doit être basé sur un thème tel que @Android: style/Theme.Dialog qui contient les propriétés spécifiques aux boîtes de dialogue.
<style name="popup_theme" parent="@Android:style/Theme.Dialog">
Essayez de remplacer Thème.Dialog en utilisant des éléments tels que:
<item name="Android:textAppearance">?android:attr/textAppearanceInverse</item>
Essaye ça:
<style name="popup_theme" parent="Theme.AppCompat.Light.Dialog.Alert">
parent="Android:style/Theme.Light"
C'est ce que j'ai fait. Et ça a fonctionné pour moi
AlertDialog.Builder builder = new AlertDialog.Builder(context,R.style.Theme_AppCompat_Light_Dialog);