web-dev-qa-db-ja.com

ProgressDialogの背景を変更する

ProgressDialogの背景を変更しようとしています。ネットを検索してさまざまな提案を見つけました( Dialogから境界線を削除する方法 など)が、ProgressDialogの実際の背景を置き換えることができません。代わりに、ダイアログの背後に別の背景(黄色)が表示されます。

Styled Dialog

私のスタイル:

<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つのパッチと同じもので、色を変更しました。私が間違っていることのヒントをいくつかいただければ幸いです。

26
aha

Aleks Gのコメント(質問の下)は正しい方向を指し示しています。ダイアログの外観は、個別のスタイル(Android:alertDialogStyle)で定義されます。しかし、スタイルをProgressDialogに直接適用することはできません。さて、黄色の背景をどのように取得しますか?

ステップ1Theme.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。このスタイルは、質問の黒い領域の外観を制御します。

ステップ2CustomAlertDialogStyleを定義します:

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

これにより、質問の黒い領域が黄色に設定されます。

ステップMyThemeProgressDialogに適用します、notCustomAlertDialogStyle

ProgressDialog dialog = new ProgressDialog(this, R.style.MyTheme);

結果は次のとおりです。

Styled ProgressDialog

同じ手順がAlertDialogProgressDialogの親クラス)でも機能します。

63
aha