ProgressBar.setProgressDrawable不适用于Android 2.3

jbe*_*itz 9 android

我目前正在进行动态更新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)

ans*_*had 8

我有同样的错误,但通过使用这个答案解决了

这意味着搜索栏有一个新的可绘制集,但是drawable的大小为0,你什么都看不到.

Rect bounds = mySeekBar.getProgressDrawable().getBounds();
mySeekBar.setProgressDrawable(newSeekBarBackground);
mySeekBar.getProgressDrawable().setBounds(bounds);
Run Code Online (Sandbox Code Playgroud)