我目前正在使用动态更新的ProgressBar
。通过一定的百分比,进度条会设置不同颜色的可绘图件。我们目前在可绘制的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));
然而,这不仅没有更新进度条,而且还把空白的进度条全部去掉了。但是,如果我在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" />
我有同样的错误,但它是通过使用这个答案来解决的
这意味着在搜索栏中有一个新的可绘制集,但可绘制集的大小为0,您将看不到任何内容。
Rect bounds = mySeekBar.getProgressDrawable().getBounds();
mySeekBar.setProgressDrawable(newSeekBarBackground);
mySeekBar.getProgressDrawable().setBounds(bounds);
根据这个帖子https://stackoverflow.com/a/6953534/3223742
一个好的解决方案是将progress设置为1;重新设置最大进度,然后设置实际进度:
progressBar.setProgressDrawable(...);
progressBar.setProgress(1);
progressBar.setMax(maxProgress);
progressBar.setProgress(progress);