4

以下の画像のようなカスタムの水平プログレス バーを作成する必要があります。

目的のカスタム水平プログレス バー

そして、ドローアブルのレイヤーリストを使用して、下の画像のようなプログレスバーを設計しました:

私のプログレスバー

必要な画像のように、進行状況が25を超えたときに垂直線を描きたいです。このコードを書きましたが、うまくいきませんでした。

myProgressBar = (ProgressBar) findViewById(R.id.progress);
Canvas canvas = new Canvas();
Paint p = new Paint();
p.setStrokeWidth(2);
p.setColor(Color.WHITE);
canvas.drawLine(a, b, c, d, p);

if(myProgressBar.getProgress() > 25){
    myProgressBar.draw(canvas);
}

プログレスバーに垂直線を引くのを手伝ってください。これはスタック オーバーフローでの私の最初の質問なので、申し訳ありませんがいくつかの間違いがあるかもしれません。

4

3 に答える 3

1

レイヤーリストを使用してみることができます

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:id="@android:id/background">
       <shape>
            <corners android:radius="3dip" />
            <gradient
                android:angle="0"
                android:endColor="#e9e9f4"
                android:startColor="#e9e9f4" />
        </shape>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                    android:angle="0"
                    android:endColor="#16a023"
                    android:startColor="#16a023" />
            </shape>
        </clip>
    </item>
    <item android:id="@+id/line" >
        <rotate android:fromDegrees="90" android:pivotX="10%" >
           <shape android:shape="line" >
               <stroke android:width="2dp" android:color="#ffffff" />
           </shape>
       </rotate>
   </item>
</layer-list>
于 2016-05-10T20:30:07.353 に答える
0

私の観点からは、25より大きい場合はその行をレンダリングする必要があるということです..これを試して、知っておいてください

if(myProgressBar.getProgress() > 25){
    canvas.drawLine(a, b, c, d, p);
    myProgressBar.draw(canvas);
}
于 2014-09-12T18:21:09.397 に答える
0

質問はかなり古いですが、まだGoogleに出てきます。進行状況の上または下に縦線が必要かどうかわかりません。アリの答えは線を上に表示し、下に線を表示したかったので、私のバージョンのレイヤーリストは次のとおりです。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <layer-list>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="@color/light_gray"/>
                    <corners
                        android:bottomRightRadius="10dp"
                        android:topRightRadius="10dp" />
                </shape>
            </item>
            <item>
                <rotate android:fromDegrees="90" android:pivotX="53%">
                    <shape android:shape="line" android:tint="@color/white">
                        <stroke android:width="1dp"/>
                    </shape>
                </rotate>
            </item>
        </layer-list>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <scale android:scaleWidth="100%">
                <shape android:shape="rectangle">
                    <solid android:color="@color/bright_teal"/>
                    <corners
                        android:bottomRightRadius="10dp"
                        android:topRightRadius="10dp" />
                </shape>
            </scale>
        </clip>
    </item>
</layer-list>

ネストされたレイヤー リストの 2 番目の項目は、垂直線です。必要な数の垂直線を配置し、android:pivotX値を変更して位置を設定できます。

于 2019-08-02T09:23:59.193 に答える