【发布时间】:2013-03-20 23:30:26
【问题描述】:
我目前正在使用动态更新的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设置为可绘制进度时,您是否尝试过更新它的边界? -
你的意思是设置进度量吗?如果是这样,我们会在设置可绘制对象后立即执行此操作。
-
如果您指的是布局边界,请在我在上面添加的 xml 中执行此操作。
-
不,我指的是drawable的边界(除其他外,它从4.0开始)。像这样:
Drawable 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);?
标签: android