Android:参考样式父级

时间:2013-11-07 11:27:25

标签: android android-styles layout-xml

我想为水平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样式和自定义样式的自定义填充的任何想法吗?

2 个答案:

答案 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>
相关问题