Android selector with color

Android selector with color

Android Color State List Example

February 25, 2018

Using Android color state list, different colors can be applied to Android widgets depending on applicable states such as pressed, focused, selected, checkable, checked and enabled. Color state list can be defined in xml file and used as value for attributes such as textColor.

Color state list is defined in xml and saved under res/color folder. Its root element is selector and item element is defined for each state that you want to define color for using color and alpha attributes. Default color, which is used when color for specific state is not defined, should be the last element.

Below is an example of color state list xml.

You can apply above color state list to a view, for example apply it to a button to set different text colors depending on whether it is pressed or not.

Button Background Color Based on State

Below example shows how to configure button background to set different colors depending on its state such as pressed, focused and disabled.

First define color state list.

Then define drawable xml for button background and set solid color value to color state list.

Then apply it to Button by setting background.

Color State List Checkbox Example

For checkbox, toggle button and switch, different colors can be set depending on states such as checked and enabled.

Читайте также:  Синхронизация устройств андроид как отключить

Applying color state list to checkbox.

About

Android app development tutorials and web app development tutorials with programming examples and code samples.

Источник

Селектор на цвет фона TextView

Я пытаюсь изменить цвет фона виджета Android TextView , когда пользователь коснется его. Я создал селектор для этой цели, который хранится в res/color/selector.xml и примерно выглядит следующим образом:

Атрибут clickable TextView – true , если это интересно.

Когда я назначаю этот селектор TextView как android:background=»@color/selector» , во время выполнения я получаю следующее исключение:

ERROR/AndroidRuntime (13130): вызвано: org.xmlpull.v1.XmlPullParserException: двоичная строка XML файла # 6: для тега требуется атрибут “drawable” или дочерний тег, определяющий drawable

Когда я изменяю атрибут на drawable, он работает, но результат выглядит совершенно неправильно, потому что идентификаторы кажутся интерпретированными как ссылки на изображения вместо ссылок на цвет (как предлагает “drawable” ).

Что меня смущает, так это то, что я могу установить ссылку на цвет, например. “@color/black”, как атрибут фона напрямую. Это работает как ожидалось. Использование селекторов не работает.

Я также могу использовать селектор как textColor без проблем.

Каков правильный способ применения фонового цвета-селектора к TextView в Android?

Проблема в том, что вы не можете определить цвет фона с помощью селектора цветов, вам нужен селектор drawable. Итак, необходимые изменения выглядят так:

Вам также понадобится переместить этот ресурс в каталог drawable , где это будет иметь больше смысла, поскольку оно не является селектором цвета как таковым.

Затем вам нужно будет создать файл res/drawable/selected_state.xml следующим образом:

и, наконец, вы бы использовали его следующим образом:

Примечание: причина, по которой OP получала образы ресурса изображения, вероятно, потому, что он пытался просто ссылаться на свой ресурс, который все еще находился в цветовой директории, но используя @drawable , поэтому он закончил с столкновение с идентификатором, выбор неправильного ресурса.

Читайте также:  Где есть ручка андроид

Надеюсь, что это все равно поможет кому-то, даже если OP, вероятно, вероятно, решит свою проблему.

Решение Benoit работает, но вам действительно не нужно брать накладные расходы, чтобы нарисовать фигуру. Поскольку цвета могут быть выделенными, просто определите цвет в файле /res/values/colors.xml:

И затем используйте как таковой в своем селекторе:

Еще более простое решение выше:

Сохраните это в выпадающей папке, и вам будет хорошо.

Даже это работает.

Я добавил атрибут android:drawable к каждому элементу, а их значения – цвета.

Кстати, почему они говорят, что color является одним из атрибутов selector ? Они не пишут, что требуется android:drawable .

Для тех, кто ищет это, не создавая фоновый сектор, просто добавьте эти строки в TextView

Источник

Оцените статью