2013-11-07 2 views
4

Я хочу написать собственный стиль для горизонтального ProgressBar.Android: ссылка style parent

Если вы хотите добавить горизонтальную 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, так и мои пользовательские paddings в пользовательском стиле?

ответ

5

Поместите это в качестве родителя:

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

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

То, что со старым стилем. Вы знаете, какой из них мне нужно использовать для стиля Holo? (Уровень API 13) – Terry

 Смежные вопросы

  • Нет связанных вопросов^_^