Android ProgressBar:如何以编程方式设置辅助颜色

时间:2011-06-04 09:23:51

标签: android colors progress-bar

我需要以编程方式设置辅助进度条颜色

我只看到方法

ProgressBar.setProgressDrawable(drawable)

用于设置主要颜色,但没有设置辅助颜色的方法。

我怎么做?

4 个答案:

答案 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"/>

参考此链接

https://stackoverflow.com/a/27144594/1554031