ProgressDialog
の背景を変更しようとしています。ネットを検索してさまざまな提案を見つけました( Dialogから境界線を削除する方法 など)が、ProgressDialog
の実際の背景を置き換えることができません。代わりに、ダイアログの背後に別の背景(黄色)が表示されます。
私のスタイル:
<style name="StyledDialog" parent="@Android:style/Theme.Dialog">
<item name="Android:windowBackground">@drawable/panel_background</item>
</style>
ProgressDialog
を起動するコード:
ProgressDialog dialog = new ProgressDialog(this, R.style.StyledDialog);
dialog.setTitle("The title");
dialog.setMessage("The message.");
dialog.show();
ドロウアブルは、SDKに含まれている9つのパッチと同じもので、色を変更しました。私が間違っていることのヒントをいくつかいただければ幸いです。
Aleks Gのコメント(質問の下)は正しい方向を指し示しています。ダイアログの外観は、個別のスタイル(Android:alertDialogStyle
)で定義されます。しかし、スタイルをProgressDialog
に直接適用することはできません。さて、黄色の背景をどのように取得しますか?
ステップ1:Theme.Dialog
から継承するテーマを定義します:
<style name="MyTheme" parent="@Android:style/Theme.Dialog">
<item name="Android:alertDialogStyle">@style/CustomAlertDialogStyle</item>
<item name="Android:textColorPrimary">#000000</item>
</style>
そこで、wholeウィンドウの背景色(質問では黄色)、フォントの色などを定義できます。本当に重要なのは、 Android:alertDialogStyle
。このスタイルは、質問の黒い領域の外観を制御します。
ステップ2: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>
これにより、質問の黒い領域が黄色に設定されます。
ステップ:MyTheme
をProgressDialog
に適用します、notCustomAlertDialogStyle
:
ProgressDialog dialog = new ProgressDialog(this, R.style.MyTheme);
結果は次のとおりです。
同じ手順がAlertDialog
(ProgressDialog
の親クラス)でも機能します。