我正在尝试使用Java动态更改自定义进度条的颜色。
这是主布局上ProgressBar的实现:
我创建了两个单独的可绘制对象来自定义进度条,如下所示:
这是应该将进度条从绿色(@color/progress)更改为红色的Java代码:
这就是主题,(我将两个主题设置为完全相同):
这不是我想要的结果。我希望它变成红色,如 Java 代码所示。我缺少什么?我的副驾驶聊天机器人没有帮助..我非常感谢您的帮助。预先感谢您。
假设
progress
是一个保存进度条引用的变量,那么您可以使用以下 Java 代码以编程方式更改进度颜色:
LayerDrawable drawable = (LayerDrawable) progress.getProgressDrawable();
Drawable progressLayer = drawable.findDrawableByLayerId(android.R.id.progress);
setTintList(progressLayer.mutate(), context.getResources().getColorStateList(R.color.white, context.getTheme()))
Kotlin 中的等效项:
val drawable = progress.progressDrawable as LayerDrawable
val progressLayer = drawable.findDrawableByLayerId(android.R.id.progress)
setTintList(progressLayer.mutate(), resources.getColorStateList(R.color.white, theme))
setTintLint
是来自 DrawableCompat
的静态函数。颜色应该是有效的 ColorRes 资源。
希望这有帮助。