我目前正在使用动态更新的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));
但是,这不仅不会更新 ProgressBar,而且还会完全删除进度条,因为它会留下空白。但是,如果我android:progressDrawable="@drawable/progressbar_blue_states"
在 xml 中设置并取出这个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" />