9

私は現在、動的に更新するProgressBar. 特定のパーセンテージで、progessbar は別の色のドローアブルを設定します。現在、さまざまな色のクリップ ドローアブルがドローアブル 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" />
4

2 に答える 2

4

この投稿によるとhttps://stackoverflow.com/a/6953534/3223742

適切な解決策は、progress を 1 に設定することです。最大進行状況を再設定してから、実際の進行状況を設定します。

progressBar.setProgressDrawable(...);
progressBar.setProgress(1);
progressBar.setMax(maxProgress);
progressBar.setProgress(progress);
于 2014-04-24T06:58:56.780 に答える