Используйте тему со стилем, селектором и атрибутом на Android - PullRequest
2 голосов
/ 02 марта 2012

Я пытаюсь изменить цвет текста с темой в селекторе, но у меня уже тот же цвет: #fff (у меня нет этого цвета в моем colors.xml!)

Вот мой selector.xml (в drawable /):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:color="@android:color/white" />
    <item android:state_focused="true" android:color="@android:color/white" />
    <item android:state_pressed="true" android:color="@android:color/white" />
    <item android:color="?attr/tabsTextColor" />
</selector>

Мой файл attrs.xml:

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

Файл Colors.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- ... -->
    <color name="tabs_text_color">#ff0</color>
</resources>

И моя theme.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.Custom" parent="@style/Theme.GreenDroid.NoTitleBar">
        <item name="tabsTextColor">@color/tabs_text_color</item>
    </style>
</resources>

Я не понимаю, потому что цвет текста - красный (получим # f00 с фотошопом), но не # ff00!

Где ошибка? Спасибо

РЕДАКТИРОВАТЬ: Я заменяю в моем макете

android:textColor="@drawable/selector.xml"

К

android:textColor="?attr/tabsTextColor"

И цвет хороший! Я не могу использовать селектор с атрибутом темы?

Ответы [ 2 ]

11 голосов
/ 22 апреля 2014

Вы не можете ссылаться на атрибуты темы внутри селектора, но вы можете создать несколько селекторов, каждый из которых ссылается только на цвет / ресурсы рисования, а затем использовать ссылочный атрибут для управления тем, какой селектор используется в вашей теме

0 голосов
/ 05 апреля 2012

Первый:
Проблема с вашей цветовой кодировкой.
Цвет указывается как комбинация RGB (красный, зеленый, синий), где в фотошопе 0xff00 означает его цвет 16 бит / 15 бит, первый байт которого имеет значение 0xFF, которое будет иметь красный компонент, но не красный точно ..

Теперь для андроида в нем указаны многие другие вещи. цвет кодируется как ARGB, где это Alpha, Red Green Blue, поэтому значение цвета непрозрачного красного будет 0xFFFF0000. Цвет в Android - 32-битное значение.

Второе:
android:textColor="?attr/tabsTextColor" принимает значение цвета. Проходной селектор неверен.

Третий
Каждый элемент в селекторе должен иметь ссылку на чертеж. Где это? Вы должны иметь рисовать в вашем селекторе, как и в someselector.xml.
<item android:state_focused="false"<br> android:state_selected="false"<br> android:state_pressed="false"<br> android:drawable="@drawable/something" />

Так что в своем коде вы можете использовать вот так android:drawableRight="@drawable/somethingseletor"

...