我目前正在使用一个动态更新的 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,还会将进度条完全取出,留下空白。但是,如果我在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" />
progressbar_blue
的边界值,将其设置为进度绘制时了吗? - userDrawable newDr = getResources().getDrawable(R.drawable.progressbar_blue_states); newdr.setBounds(0, 0, progressbar.getWidth() - progressbar.getPaddingLeft() - progressbar.getPaddingRight(), progressbar.getHeight() - progressbar.getPaddingTop() -progressbar.getPaddingBottom()); progressbar.setProgressDrawable(newDr);
? - user