Intereting Posts
Тестирование бесконечной прокрутки RecyclerView с помощью Espresso и RxJava Роль файла classes.dex в файле apk Возможность выбора будущей даты при установке максимальной даты в datepicker Защитить скрипт от ботов и нежелательных запросов Android Studio и MonkeyTalk? Служба AIDL не подключается после bindService () Когда дочерние представления добавляются в Layout / ViewGroup из XML Сканер документов для Android с использованием opencv Как создавать приложения для Android с помощью Delphi Не удается создать ключ в хранилище ключей Android Можете ли вы определить фильтр намерений Android, используя строковый ресурс? Как обрабатывать уведомления типа fcm, когда приложение не работает или закрыто в iOS, подобное андроиду? Как отобразить Toast из сервиса после завершения основной операции? OnRestart () вызывается, когда нажата кнопка «Назад», каким-либо образом предотвратить это? Управление памятью HttpClient

Изменение оттенка рисования в селекторе xml

У меня есть кнопка с фоном, определенным в xml. Я хотел бы поправить кнопку, основанную на текущем состоянии, в котором она находится, т.е. нажата, фокусирована, нормальна.

Вот мой xml-файл ниже. Кроме того, мои colored_tint_dark и colored_tint – это полупрозрачные цвета, которые я пытаюсь нарисовать на рисоваемое изображение, которое я вызываю из папки ресурсов. Вот проблема. Когда пользовательский интерфейс сначала загружается, изображение имеет соответствующий оттенок, но после нажатия, нажатое состояние не показывает никакого оттенка, тогда нормальное состояние не будет показывать никакого оттенка.

 <?xml version="1.0" encoding="utf-8"?> 

 <item android:state_pressed="true" android:drawable="@drawable/rounded_grayscale_pinstripe_button"> <shape> <gradient android:endColor="@color/colored_tint" android:startColor="@color/colored_tint" android:angle="270" /> <stroke android:width="0dp" android:color="@color/colored_tint" /> <corners android:radius="0dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item android:state_focused="true" android:drawable="@drawable/rounded_grayscale_pinstripe_button"> <shape> <gradient android:endColor="@color/colored_tint" android:startColor="@color/colored_tint" android:angle="270" /> <stroke android:width="0dp" android:color="@color/colored_tint" /> <corners android:radius="0dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item android:drawable="@drawable/rounded_grayscale_pinstripe_button"> <shape> <gradient android:endColor="@color/colored_tint_dark" android:startColor="@color/colored_tint_dark" android:angle="270" /> <stroke android:width="0dp" android:color="@color/colored_tint_dark" /> <corners android:radius="0dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> 

Я знаю, что в java есть решения, но я специально ищу решение в xml. Благодарю.

Solutions Collecting From Web of "Изменение оттенка рисования в селекторе xml"

Создайте селектор tint_menu_item.xml:

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

(В моем примере изображение белого цвета, если выбрано, и зеленого цвета, если оно не выбрано)

Затем в вашем xml вы можете добавить атрибут tint к ImageView:

 <ImageView android:layout_width="30dp" android:layout_height="30dp" android:tint="@color/tint_menu_item" android:src="@drawable/ic_menu_home" /> 

Вы также можете использовать этот селектор в TextView, используя textColor attibute:

 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/tint_menu_item" /> 

Вы пробовали с селектором ?

Вы можете найти несколько примеров ЗДЕСЬ