我想为水平进度条编写自定义样式。
如果要添加横向的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 样式和自定义样式中的自定义填充的任何想法?
最佳答案
将其作为父级:
<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。
关于Android:引用样式父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19834738/