2010-06-10 2 views
2

У меня есть список с двумя ярлыками, заголовком и субтитрами. Я хочу иметь темный и светлый фон в качестве пользовательских параметров. Заголовок имеет textAppearanceMedium и субтитр имеет textAppearanceSmall. Я хочу стиль, MyTheme.Dark иметь белый цвет текста и MyTheme.Light иметь черный цвет текста. Есть ли способ определить несколько атрибутов textAppearance для одного и того же виджета TextView?Как разрешить пользователям выбирать темы в представлении списка Android?

<style name="MyTheme.Dark"> 
    <item name="android:windowBackground">@color/black</item> 
    <item name="android:colorBackground">@color/black</item> 
    <item name="android:background">@color/black</item> 
    <item name="android:divider">@color/white</item> 
     --cannot put textAppearance here since it is different for title and subtitle 
    </style> 

ответ

0

Я думаю, что лучший способ - иметь разный макет xml для разных цветов и тем. Загрузите макет xml по выбору пользователя. Мне это не нравится, но я не нашел альтернатив.

+0

см. Ответ, который я добавил ... – Edi

0

Я новичок в Android себя, и я не уверен, если я не делаю задницу из себя здесь, но почему бы вам не использовать андроид: TextColor недвижимость?

<style name="MyTheme.Dark"> 
    <item name="android:windowBackground">@color/black</item> 
    <item name="android:colorBackground">@color/black</item> 
    <item name="android:background">@color/black</item> 
    <item name="android:divider">@color/white</item> 
    <item name="android:textColor">@color/white</item> 
</style> 
+0

Тема будет применена к Деятельности. У меня будут другие атрибуты текста, которые отличаются для заголовка и субтитров. Похоже, мне нужно перефразировать мой вопрос. – dipu

+0

Определенный системой стиль TextAppearance имеет цвет, указанный размер. Следовательно, цвет, заданный в теме, не относится к виджетам TextView. Попытка определить свой собственный стиль TextAppearance все еще не повезло. Похоже, ListView получает некоторое listAppearance, даже если я его не укажу. – dipu

4

На будущее ...

В значениях/themes.xml:

<style name="MyTheme.Dark"> 
    <item name="textColorTitle">@color/white</item> 
</style> 
<style name="MyTheme.Light"> 
    <item name="textColorTitle">@color/black</item> 
</style> 

В значениях/attrs.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <attr 
     name="textColorTitle" 
     format="reference|color" /> 
</resources> 

В верстки/my_list_row.xml, использование textColorTitle для вашего текста, например:

android:textColor="?textColorTitle" 

Сообщите мне, если он не работает. Меня устраивает.

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