水平の ProgressBar のカスタム スタイルを書きたいと思います。
水平の ProgressBar を追加する場合は、次のようにシステム スタイルを参照する必要があります。
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
いくつかの親を追加するカスタム スタイルを作成しましたが、水平形状を与えるスタイル参照が既にあるため、このシステム スタイルを継承する必要があります。
私はこのように試しました:
<style name="itemViewProgressBar" parent="@android:attr/progressBarStyleHorizontal">
<item name="android:paddingLeft">@dimen/ivProgressBarPaddingLeft</item>
<item name="android:paddingRight">@dimen/ivProgressBarPaddingRight</item>
<item name="android:paddingTop">@dimen/ivProgressBarPaddingTop</item>
<item name="android:paddingBottom">@dimen/ivProgressBarPaddingBottom</item>
</style>
そして、ProgressBar では、次のように参照しました。
<ProgressBar
android:id="@+id/progressBar1"
style="@style/itemViewProgressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
スタイル xml ではエラーが発生しないため、参照は正常に機能しているようです。しかし、それでも ProgressBar には何の影響もありません。属性を省略したのと同じように見えparent
ます (つまり、円形の ProgressBar が表示されます)。
もちろん、ProgressBar
要素自体ですべてのパディングを定義し、デフォルトのように ProgressBar でシステム スタイルを参照できます。しかし、特に頻繁に再利用する必要があるため、よりエレガントな方法はカスタム スタイルを使用することです。
システムの水平な ProgressBar スタイルとカスタム スタイルのカスタム パディングの両方を実現する方法について何か考えはありますか?