Intereting Posts

Изменить фон ProgressDialog

Я пытаюсь изменить фон ProgressDialog . Я обыскал сеть и нашел различные предложения (например, « Как удалить границу из диалогового окна?» ), Но я не могу заменить фактический фон 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(); 

Выделенный – это тот же самый 9 патч, который включен в SDK, я просто изменил цвет. Я был бы очень признателен за некоторые намеки на то, что я делаю неправильно.

Solutions Collecting From Web of "Изменить фон ProgressDialog"

Комментарий 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> 

Там вы можете определить такие вещи, как цвет фона для всего окна (желтый в вопросе), цвета шрифтов и т. Д. Что действительно важно, это определение 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> 

Это задает черную область в вопросе желтой.

Шаг 3 : Примените MyTheme к ProgressDialog , а не CustomAlertDialogStyle :

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

И вот результат:

Стилированный прогрессDialog

Эта же процедура работает с AlertDialog (который является родительским классом ProgressDialog ).

Вы можете попробовать мой смысл . Он в основном устанавливает цветной фильтр на растягиваемый.

 import android.content.Context; import android.graphics.Color; import android.util.AttributeSet; import android.widget.ProgressBar; public class ColoredProgressBar extends ProgressBar { public ColoredProgressBar(Context context) { super(context); if (!isInEditMode()) init(); } public ColoredProgressBar(Context context, AttributeSet attrs) { super(context, attrs); if (!isInEditMode()) init(); } public ColoredProgressBar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); if (!isInEditMode()) init(); } /** * Changes color. */ private void init() { getIndeterminateDrawable().setColorFilter(Color.BLUE, android.graphics.PorterDuff.Mode.MULTIPLY); } }