2010-05-21 2 views
1

Как я могу рассказать свой собственный макет Spinner для использования моей темы?Как я могу рассказать свой собственный макет Spinner для использования моей темы?

Стиль:

<style name="SpinnerText" parent="@android:style/Widget.TextView.SpinnerItem"> 
    <item name="android:textAppearance">@style/AnswerTextElement</item> 
<item name="android:gravity">center_vertical|center_horizontal</item> 
</style> 

Тема:

<style name="ApplicationTheme" parent="android:style/Theme.NoTitleBar"> 
    <item name="android:buttonStyle">@style/Button</item> 
    <item name="android:spinnerStyle">@style/Spinner</item> 
    <item name="android:spinnerItemStyle">@style/SpinnerText</item> 
</style> 

Это работает по умолчанию Спиннерса, однако не работает с моим пользовательским макетом:

<RelativeLayout android:layout_width="fill_parent" 
android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> 
<TextView android:layout_height="wrap_content" android:id="@+id/text1" 
    android:text="label name" android:layout_width="fill_parent" 
    android:layout_toLeftOf="@+id/check1"></TextView> 
<CheckBox android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:id="@+id/check1" 
    android:layout_alignParentRight="true" android:clickable="false" 
    android:focusable="false" android:focusableInTouchMode="false" 
    style="@style/CheckBoxPlainBackground"></CheckBox> 
</RelativeLayout> 

ответ

0

Вы хотите, чтобы ваши TextViews в RelativeLayout использовать тот же стиль текста? Добавить "[email protected]/SpinnerText" атрибут TextView.

+1

Я понимаю это, но это будет означать, что если бы я изменил эту тему, мне пришлось бы вручную обновлять их макет - я не хочу этого делать. Кстати, я попробовал добавить @android: style/Widget.TextView.SpinnerItem как стиль, думающий, что он будет использовать переопределенный стиль, но он не работает. – jax

+0

Попробовали ли вы создать пользовательский вид на основе Spinner? Тогда вы можете легко стилизовать его. (Http://developer.android.com/guide/topics/ui/custom-components.html#modifying) –

1

РЕШИТЬ:

Вам нужно добавить

?android:attr/spinnerItemStyle 

с атрибутом стиля макета. Теперь он будет действовать как фактический элемент Spinner и все изменится на тему.

Кстати - я нашел это в SDK под YOUR_SDK \ платформ \ Android, 1.6 \ Data \ Рез \ верстки \ simple_spinner_item.xml

Вы сможете найти и другие стили для других элементов управления в этом каталоге ,

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