円形のプログレスバーがあり、正常に動作します。ただし、xmlドローアブルファイルで「背景」の形状を指定し、円の右側から進行が開始されても、背景が表示されません(図を参照)。 )。上から作って欲しいです。
これが私のコードです:
<ProgressBar
Android:id="@+id/progressBarToday"
style="?android:attr/progressBarStyleHorizontal"
Android:layout_width="50dip"
Android:layout_height="50dip"
Android:layout_centerInParent="true"
Android:indeterminate="false"
Android:max="60"
Android:progress="0"
Android:progressDrawable="@drawable/progressbar" />
progressbar.xml
<?xml version="1.0" encoding="UTF-8" ?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:id="@Android:id/background"> <---not working!
<shape
Android:innerRadiusRatio="3"
Android:shape="ring"
Android:thicknessRatio="7.0">
<solid Android:color="@color/red"/>
</shape>
</item>
<item Android:id="@Android:id/progress">
<shape
Android:innerRadiusRatio="3"
Android:shape="ring"
Android:thicknessRatio="7.0">
<solid Android:color="@color/blue"/>
</shape>
</item>
</layer-list>
次のコードを使用して進行状況を設定します。
ProgressBar pb = (ProgressBar)FindViewById (Resource.Id.progressBarToday);
_progressBar.Progress = _progressCount;
背景が表示されないのはなぜですか?どうすれば上から進捗を開始できますか?
誰でも助けてください、ありがとう。
私はそれを動かしました
<ProgressBar
Android:id="@+id/progressBarToday"
style="?android:attr/progressBarStyleHorizontal"
Android:layout_width="50dip"
Android:layout_height="50dip"
Android:layout_centerInParent="true"
Android:indeterminate="false"
Android:max="60"
Android:progress="0"
Android:background="@drawable/bg" // here is working background
Android:progressDrawable="@drawable/progressbar" />
次の属性を背景アイテムに追加する必要があります。
Android:useLevel="false"
そのようです:
<?xml version="1.0" encoding="UTF-8" ?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:id="@Android:id/background"> <---not working!
<shape
Android:innerRadiusRatio="3"
Android:shape="ring"
Android:useLevel="false"
Android:thicknessRatio="7.0">
<solid Android:color="@color/red"/>
</shape>
</item>
<item Android:id="@Android:id/progress">
<shape
Android:innerRadiusRatio="3"
Android:shape="ring"
Android:thicknessRatio="7.0">
<solid Android:color="@color/blue"/>
</shape>
</item>
</layer-list>
上から始めるには、「回転」を使用できます
<item Android:id="@Android:id/progress">
<rotate
Android:fromDegrees="-90"
Android:toDegrees="-90">
<shape
Android:innerRadiusRatio="3"
Android:shape="ring"
Android:thicknessRatio="7.0"
Android:useLevel="true">
<solid Android:color="@color/blue"/>
</shape>
</rotate>
</item>
はい。私は手遅れですが、これは他の人を助けるかもしれません。このコードはビットマップ画像を返し、ImageViewまたはImageButtonで使用できます。
private Bitmap progressBar(int progress) {
Bitmap bitmap = Bitmap.createBitmap(300, 300, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
Paint.setColor(Color.parseColor("#FF0000"));
Paint.setStrokeWidth(20);
Paint.setAntiAlias(true);
Paint.setStyle(Paint.Style.FILL_AND_STROKE);
canvas.drawCircle(150, 150, 140, Paint);
Paint.setColor(Color.parseColor("#01aa01"));
Paint.setStrokeWidth(16);
Paint.setStyle(Paint.Style.STROKE);
final RectF oval = new RectF();
Paint.setStyle(Paint.Style.FILL);
oval.set(10, 10, 290, 290);
canvas.drawArc(oval, 270, (progress * 360) / 100, true, Paint);
Paint.setStrokeWidth(1);
Paint.setTextSize(100);
Paint.setTextAlign(Align.CENTER);
Paint.setColor(Color.parseColor("#ffffff"));
canvas.drawText("" + progress, 150, 150 + (Paint.getTextSize() / 3),
Paint);
return bitmap;
}