我目前正在进行动态更新ProgressBar.通过一定的百分比,progessbar设置了不同颜色的drawable.我们目前有一个可绘制的xml中定义的各种彩色夹子drawable.题为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>
Run Code Online (Sandbox Code Playgroud)
每当我们需要更新对话框时,我们都会调用以下代码:
progressBar.setProgressDrawable(getResources().getDrawable(R.drawable.progressbar_blue_states));
Run Code Online (Sandbox Code Playgroud)
但是,这不仅不会更新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" />
Run Code Online (Sandbox Code Playgroud)
我有同样的错误,但通过使用这个答案解决了
这意味着搜索栏有一个新的可绘制集,但是drawable的大小为0,你什么都看不到.
Rect bounds = mySeekBar.getProgressDrawable().getBounds();
mySeekBar.setProgressDrawable(newSeekBarBackground);
mySeekBar.getProgressDrawable().setBounds(bounds);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4936 次 |
| 最近记录: |