Android:引用样式父级

标签 android android-styles layout-xml

我想为水平进度条编写自定义样式。

如果要添加横向的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/

相关文章:

android studio 0.5.2 : could not resolve com. android.tools.build :gradle:0. 9.+

android - Android Widget 中的可滚动 TextView

Android Action Bar SearchView 菜单图标大小

android - 自定义溢出图标太大(使用 android.support.v7 和 AppCompat)

css - magento - 布局更新 xml 以添加删除或修改元素类名称

android - 从 adb 获取包的可启动 Activity 名称

android - 为什么在使用操作栏的支持库 API 时每个样式属性必须声明两次?

java - 更改android顶部栏的背景颜色

magento - 在 Magento 皮肤 Javascript 之前加载外部 Javascript

android - 如果为空,则更改 ListView 布局