J'essaie de changer l'arrière-plan d'un ProgressDialog
. J'ai cherché sur le net et trouvé diverses suggestions (comme Comment supprimer la bordure de la boîte de dialogue? ), mais je ne peux pas remplacer l'arrière-plan réel du ProgressDialog
. À la place, j'obtiens un autre arrière-plan (jaune) derrière la boîte de dialogue:
Mon style:
<style name="StyledDialog" parent="@Android:style/Theme.Dialog">
<item name="Android:windowBackground">@drawable/panel_background</item>
</style>
Le code qui lance le ProgressDialog
:
ProgressDialog dialog = new ProgressDialog(this, R.style.StyledDialog);
dialog.setTitle("The title");
dialog.setMessage("The message.");
dialog.show();
Le dessinable est le même patch 9 qui est inclus dans le SDK, je viens de changer de couleur. J'apprécierais grandement quelques indices sur ce que je fais mal.
Le commentaire d'Aleks G (sous la question) va dans le bon sens. L'apparence de la boîte de dialogue est définie par un style distinct (Android:alertDialogStyle
). Mais on ne peut pas appliquer le style directement à un ProgressDialog
. Maintenant, comment puis-je obtenir ce fond jaune?
Étape 1: Définissez un thème qui hérite de Theme.Dialog
:
<style name="MyTheme" parent="@Android:style/Theme.Dialog">
<item name="Android:alertDialogStyle">@style/CustomAlertDialogStyle</item>
<item name="Android:textColorPrimary">#000000</item>
</style>
Là, vous pouvez définir des choses comme la couleur d'arrière-plan pour la fenêtre entière (jaune dans la question), les couleurs de police, etc. Ce qui est vraiment important, c'est la définition de Android:alertDialogStyle
. Ce style contrôle l'apparence de la zone noire dans la question.
Étape 2: Définissez le CustomAlertDialogStyle
:
<style name="CustomAlertDialogStyle">
<item name="Android:bottomBright">@color/yellow</item>
<item name="Android:bottomDark">@color/yellow</item>
<item name="Android:bottomMedium">@color/yellow</item>
<item name="Android:centerBright">@color/yellow</item>
<item name="Android:centerDark">@color/yellow</item>
<item name="Android:centerMedium">@color/yellow</item>
<item name="Android:fullBright">@color/yellow</item>
<item name="Android:fullDark">@color/yellow</item>
<item name="Android:topBright">@color/yellow</item>
<item name="Android:topDark">@color/yellow</item>
</style>
Cela définit la zone noire de la question sur jaune.
Étape: appliquez MyTheme
à ProgressDialog
, pasCustomAlertDialogStyle
:
ProgressDialog dialog = new ProgressDialog(this, R.style.MyTheme);
Et voici le résultat:
La même procédure fonctionne avec AlertDialog
(qui est la classe parente de ProgressDialog
).