7

2つのインジケーターが付いたプログレスバーが欲しいです。

1つのインジケーターはタスクAの進行状況を緑色で示し、2番目のインジケーターはタスクBの進行状況を赤色で示します。すべて1つの進行状況バーに表示されます。残りは、タスクAとBの残りを示しています。

これを達成するための(簡単な)解決策はありますか?ドキュメントを読みましたが、助けが見つかりませんでした。

4

2 に答える 2

11

これは、同じプログレス バーのプライマリ プログレスとセカンダリ プログレスとして 2 つのインジケーターをコーディングすることで実行できます。

プログレスバーのサブクラスを作成します。

public class TextProgressBar extends ProgressBar {
    private Paint textPaint;

    public TextProgressBar(Context context) {
        super(context);
        textPaint = new Paint();
        textPaint.setColor(Color.BLACK);
    }

    public TextProgressBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        textPaint = new Paint();
        textPaint.setColor(Color.BLACK);
        setMax(30);
        setProgress(12);
        setSecondaryProgress(20);

    }

}

プログレス バーの XML エントリは、このサブクラスを使用して参照する必要があります。

<com.darsh.doubleProgressBar.TextProgressBar
    android:id="@+id/progressBar1"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="fill_parent"
    android:layout_height="15sp"
    android:layout_marginLeft="1sp"
    android:layout_marginRight="1sp"
    android:layout_marginTop="10sp"
    android:progressDrawable="@drawable/progress" />

リソースディレクトリにドローアブルを作成します

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

<item android:id="@android:id/background">
    <shape>
        <corners android:radius="5dip" />

        <gradient
            android:angle="270"
            android:centerColor="#ff5a5d5a"
            android:centerY="0.75"
            android:endColor="#ff747674"
            android:startColor="#ff5a5d5a" />
    </shape>
</item>
<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
            <corners android:radius="5dip" />


            <gradient
                android:angle="270"
                android:centerColor="#32cd32"
                android:centerY="0.75"
                android:endColor="#32cd32"
                android:startColor="#32cd32" />
        </shape>
    </clip>
</item>
<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners android:radius="5dip" />

            <gradient
                android:angle="270"
                android:endColor="#33B5E5"
                android:startColor="#33B5E5" />
        </shape>
    </clip>
</item>
</layer-list>

このドローアブルでは、プライマリ インジケーターとセカンダリ インジケーターの色を変更できます。

次のようにコードでそれらを使用します。

TextProgressBar textProgress;
textProgress = (TextProgressBar)findViewById(R.id.progressBar1);
textProgress.setMax(100);
textProgress.setProgress(10); //
textProgress.setSecondaryProgress(50); //green
于 2012-04-30T20:37:54.247 に答える
1

カスタム レイアウトを作成し、2 つのプログレスバーを配置します。次に、ハンドルを取得してプログレスバーを操作する必要があります。通知用の場合は、リモート ビューとして設定する必要があります。

于 2012-04-30T19:09:24.690 に答える