プログレスバーに初期パディングを追加したいのですが、ローカルデータベースから初期パディングの値を取得しているため、動的になります。
レイヤーリストxmlファイルでプログレスバーの背景を設定しました。`
<corners android:radius="7dip" />
<gradient
android:startColor="@color/background_start"
android:centerColor="@color/background_center"
android:centerY="0.75"
android:endColor="@color/background_end"
android:angle="270" />
<stroke
android:color="@color/stroke"
android:width="0.5dip"/>
</shape>
<corners android:radius="7dip" /> <gradient android:startColor="@color/secondory_progress_start" android:centerColor="@color/secondory_progress_center" android:centerY="0.75" android:endColor="@color/secondory_progress_end" android:angle="270" /> <stroke android:color="@color/stroke" android:width="0.5dip"/> </shape> </clip>
<corners
android:radius="7dip" />
<padding android:left="360dip"
android:right="50dip"/>
<gradient
android:startColor="@color/default_progress_start"
android:centerColor="@color/default_progress_center"
android:centerY="0.75"
android:endColor="@color/default_progress_end"
android:angle="270"
/>
<stroke
android:color="@color/stroke"
android:width="0.5dip"/>
</shape>
</clip>
Java コードでは、次のように xml ファイルを参照しています。
layerDrawable = (LayerDrawable)progressBar.getProgressDrawable();
次のような単純な進行中の子を取得
Drawable drawable = layerDrawable.getDrawable(layerDrawable.getId(2));
します。xmlファイルの第2レベルにあります。
そして、プログレスバーに最大値とプログレス値を設定しました。ここで、プログレスバーの進行状況の値に左パディングを追加したいと思います。setBounds メソッドを使用してこのように試しました:
`Rect rect = new Rect();
rect = drawable.getBounds();
rect.left = drawable.getBounds().left + getPaddingForFirstPeriod() + 300; rect.right = rect.left + (整数) 50; drawable.setBounds(rect);`
しかし、プログレスバーの主要な進行状況の値には何の影響も与えていません。これ以外に、パディング方法はありません。
助けてください