web-dev-qa-db-fra.com

Définir le thème Android.Light for Alert Dialog

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

27
Arnab Chakraborty

remplacez parent="Android:Theme.Light" par parent="@Android:style/Theme.Light"

6
Gallal

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

Essaye ça:

<style name="popup_theme" parent="Theme.AppCompat.Light.Dialog.Alert">
1
Ashwin
parent="Android:style/Theme.Light"
1
Chandu

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);
0
Rupam Das