ProgressBar.setProgressDrawable不适用于Android 2.3

我目前正在使用dynamic更新的ProgressBar 。 通过一定的百分比,progessbar设置了不同颜色的drawable。 我们目前有一个可绘制的xml中定义的各种彩色剪辑。 有一个名为progressbar_blue_states的详细信息如下:

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@android:id/background" android:drawable="@drawable/progressbar_grey"> </item> <item android:id="@android:id/progress"> <clip android:drawable="@drawable/progressbar_blue" /> </item> </layer-list> 

无论何时我们需要更新对话框,我们都会调用以下代码:

 progressBar.setProgressDrawable(getResources().getDrawable(R.drawable.progressbar_blue_states)); 

但是,这不仅不会更新ProgressBar,而且还会将进度条一起取出,并留下空白。 但是,如果我在xml中设置了android:progressDrawable="@drawable/progressbar_blue_states"并取出这个setProgressDrawable()调用,它将正确加载。 我们需要setProgressDrawable根据需要更新颜色。

这个调用在Android 4.0+中运行正常,但是在Android 2.3中,我们遇到了一些麻烦。 有任何想法吗?

编辑

这就是我们如何在xml中设置ProgressBar:

 <ProgressBar android:id="@+id/progress" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginBottom="2dp" android:indeterminate="false" android:indeterminateOnly="false" android:progress="24" android:max="100" android:progressDrawable="@drawable/progressbar_red_states" /> 

Solutions Collecting From Web of "ProgressBar.setProgressDrawable不适用于Android 2.3"

我有同样的错误,但它通过使用这个答案解决

这意味着有一个新的drawbar设置到seekbar,但drawable的大小是0,你什么都看不到。

 Rect bounds = mySeekBar.getProgressDrawable().getBounds(); mySeekBar.setProgressDrawable(newSeekBarBackground); mySeekBar.getProgressDrawable().setBounds(bounds); 

根据这个职位https://stackoverflow.com/a/6953534/3223742

一个好的解决方法是将进度设置为1; 重新设置最大进度,然后设置真正的进度:

 progressBar.setProgressDrawable(...); progressBar.setProgress(1); progressBar.setMax(maxProgress); progressBar.setProgress(progress);