编辑:仍然没有解决方案!至少用进度条发布代码,这也得到了 NullPointer
如何以编程方式更改每次旋转的进度对话框颜色?
代码:
if (checkValidation()) {
progressDialog.setTitle(setStringResource(R.string.reg_user));
progressDialog.setMessage(setStringResource(R.string.wait));
progressDialog.setCancelable(false);
progressDialog.show();
registerUser(getName, getEmail, getPassword);
}
另外,还有一个问题。如果我想使用这样的 progressDialog.setMessage(setStringResource(R.string.creating_user));
更改相同进度对话框的标题怎么办?
但是对于特定时间段?
比如我想在 30 秒后更改同一进度对话框的标题。
最佳答案
首先这不是推荐的解决方案,但您可以像下面这样实现
每秒运行一个计时器并使用以下方法更新它。
ProgressBar progressbar=(ProgressBar) progressDialog.findViewById(android.R.id.progress);
progressbar.getIndeterminateDrawable().setColorFilter(Color.parseColor("#C60000"), android.graphics.PorterDuff.Mode.SRC_IN);
编辑
下面写的代码是kotlin语言
pDialog = ProgressDialog.show(mContext, "Title goes here", "Message goes here")
pDialog?.show()
val progressbar = pDialog!!.findViewById(android.R.id.progress) as ProgressBar
progressbar.indeterminateDrawable.setColorFilter(Color.parseColor("#C60000"), android.graphics.PorterDuff.Mode.SRC_IN)
查看输出
在 Java 中
ProgressDialog progressDialog = ProgressDialog.show(this, "Title goes here", "Message goes here");
progressDialog.show();
ProgressBar progressbar = (ProgressBar) progressDialog.findViewById(android.R.id.progress);
runTimer(progressbar);
progressDialog 初始化后调用下面的方法。另外,不要忘记在全局变量中引用进度条。
void runTimer(final ProgressBar progressbar){
final Handler handler = new Handler();
final int delay = 1000; //milliseconds
handler.postDelayed(new Runnable(){
public void run(){
count++;
switch (count%3){
case 0:
progressbar.getIndeterminateDrawable().setColorFilter(Color.RED, android.graphics.PorterDuff.Mode.SRC_IN);
break;
case 1:
progressbar.getIndeterminateDrawable().setColorFilter(Color.GREEN, android.graphics.PorterDuff.Mode.SRC_IN);
break;
case 2:
progressbar.getIndeterminateDrawable().setColorFilter(Color.BLUE, android.graphics.PorterDuff.Mode.SRC_IN);
break;
}
handler.postDelayed(this, delay);
}
}, delay);
}
您需要全局声明count变量。
int count = 0;
关于android - 如何以编程方式为每次旋转更改进度对话框 RING 颜色? (支持应该是最新的API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54864969/