0

私は Android でプログレス バーを使用しています。XML 宣言は以下のとおりです。

   <ProgressBar
        android:id="@+id/progress"
        style="?android:attr/progressBarStyleHorizontal"
        android:progressDrawable="@color/green" <!-- See below about this line -->
        android:max="10000"
        android:progress="10000"
        android:layout_width="fill_parent"
        android:layout_height="3dp"
        android:layout_alignParentTop="true"/>

そのため、プログレスバーはその栄光などでうまく表示されます。しかし、プログレスバーの進行状況を0にリセットしてから、最大までロードするASyncTaskがあります。これはうまくいきません。代わりに、進行状況バーは最大値のままです。プログレス バーが 0 にリセットされて更新されるはずのときにプログレス バーの進行状況をログに記録しました。プログレス バーの getProgress() メソッドによると、実際には 0 になってから 10000 に戻ります。電話は満杯のままです。

XML をもう一度見てみると、android:progressDrawable. ここで、プログレス バーの色を変更します。その行を削除すると、進行状況バーは期待どおりに動作します。ただし、プログレスバーのドローアブルが希望の色に設定されている場合、画面上で完全に進行します。

以前は問題なく progressDrawable 属性を使用していましたが、この場合は頭痛の種です。これを修正する方法に関する経験やアイデアはありますか? ありがとう!

4

1 に答える 1

3

問題はandroid:progressDrawable属性です。この場合、layer-list drawableを使用する必要があります。

Horizo​​ntal ProgressBar は、最大 3 つの異なるレイヤー (background、progress、secondaryProgress) を利用します (この場合、secondaryProgress は必要ありません)。単純な色を使用したので、その色が背景に使用されていると思われ、他の 2 つの色は未設定で透明のままです。

必要なのは、次のようなドローアブルだけです。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@android:id/background"
        android:drawable="@android:color/transparent"/>
    <item android:id="@android:id/progress">
        <clip android:drawable="@color/green" />
    </item>

</layer-list>
于 2012-08-14T01:20:01.140 に答える