我想为水平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样式和自定义样式的自定义填充的任何想法吗?
答案 0 :(得分:6)
将此作为父母:
<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。
答案 1 :(得分: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>