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>