Android: родительский стиль ссылки

Я хочу написать собственный стиль для горизонтального 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 атрибут out (т.е. он показывает круговой индикатор ProgressBar).

Я, конечно, могу определить все отступы в ProgressBar сам элемент и ссылаться на стиль системы в ProgressBar, как по умолчанию. Но более элегантным способом должно быть использование собственного стиля, тем более что мне нужно использовать его довольно часто.

Любая идея о том, как я могу добиться, чтобы системный горизонтальный стиль ProgressBar и мои пользовательские отступы в индивидуальном стиле?

2 ответа

Решение

Поместите это как родитель:

<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>

Это горизонтальный ProgressBar в стиле Холо.

Попробуй это..

<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>
Другие вопросы по тегам