更改ProgressDialog的背景
我正在尝试更改ProgressDialog
的背景。 我search了networking,发现了各种build议(如如何从对话框中删除边框? ),但我无法取代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
inheritance的主题:
<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);
结果如下:
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); } }