我需要以编程方式设置辅助进度条颜色 。
我只看到方法
ProgressBar.setProgressDrawable(drawable)
用于设置主要颜色,但没有设置辅助颜色的方法。
我怎么做?
答案 0 :(得分:4)
ProgressBar.getProgressDrawable()
会返回LayerDrawable
,其中包含:
LayerDrawable progressDrawable = (LayerDrawable) getProgressDrawable();
Drawable backgroundColor = progressDrawable.getDrawable(0);
Drawable secondaryColor = progressDrawable.getDrawable(1);
Drawable primaryColor = progressDrawable.getDrawable(2);
我尝试修改颜色whit(示例):
progressDrawable.setDrawableByLayerId(progressDrawable.getId(2), new ClipDrawable(...));
但有时屏幕会冻结,有时会崩溃。 最后我放弃了寻找时间不足的问题。 对不起:(
米歇尔
答案 1 :(得分:2)
您使用setProgressDrawable
指定的drawable中包含background,primary和secondary drawable。这是android附带的example of ProgressBar
drawable:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="5dip" />
<gradient ... />
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="5dip" />
<gradient .../>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="5dip" />
<gradient ... />
</shape>
</clip>
</item>
</layer-list>
答案 2 :(得分:2)
可能与Michele没有关系,但也许它会帮助别人..
ProgressBar progress = (ProgressBar) fullView.findViewById(R.id.main_progressbar);
LayerDrawable progressDrawable = (LayerDrawable)progress.getProgressDrawable();
Drawable drawable = activity.getResources().getDrawable(R.drawable.WHATEVER_YOU_WANT);
ClipDrawable cd = new ClipDrawable(drawable, Gravity.LEFT,ClipDrawable.HORIZONTAL);
progressDrawable.setDrawableByLayerId(android.R.id.progress, cd);
答案 3 :(得分:0)
检查
您可以使用这样的可绘制xml来设置progressdrawable
<item android:id="@android:id/background"
android:drawable="@drawable/progress_bar_nor">
</item>
<item android:id="@android:id/secondaryProgress"
android:drawable="@drawable/progress_bar_nor">
</item>
<item
android:id="@android:id/progress"
android:drawable="@drawable/progress_bar_sel"/>
参考此链接