5

水平の 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 スタイルとカスタム スタイルのカスタム パディングの両方を実現する方法について何か考えはありますか?

4

2 に答える 2

7

これを親として置きます:

<style name="itemViewProgressBar" parent="@android:style/Widget.Holo.Light.ProgressBar.Horizontal">
    <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>

Holo スタイルの水平の ProgressBar です。

于 2013-11-07T16:44:07.167 に答える
0

これを試して..

<style name="itemViewProgressBar" parent="@android:style/Widget.ProgressBar.Horizontal">
    <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>
于 2013-11-07T11:43:47.363 に答える