#java #android #android-layout #kotlin
#java #Android #android-макет #kotlin
Вопрос:
У меня есть кнопка, для которой я определил два селектора, один для текста, а другой для фона.
Выбор цвета текста
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/yellow" android:state_activated="true" />
<item android:color="@color/pink" android:state_activated="false" />
</selector>
Селектор для фона
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/image_no_selected" android:state_activated="true" />
<item android:drawable="@drawable/image_selected" android:state_activated="false" />
</selector>
Кнопка в Xml
<androidx.appcompat.widget.AppCompatButton
android:id="@ id/myButton"
....
android:background="@drawable/selector_background"
...
android:textColor="@drawable/selector_text_color"
/>
Когда я нажимаю кнопку, я хочу изменить состояние, поэтому я помещаю это :
myButton.isSelected = isSelected //boolean that changes true or false
Но даже кнопка не меняется — хотя я меняю isSelected
то, чего мне не хватает?
Ответ №1:
Выбранный — это не то же самое, что активированный. Вам нужно использовать либо:
-
myButton.isActivated = ...
-
Или измените
android:state_activated
наandroid:state_selected
:<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/image_no_selected" android:state_selected="true" /> <item android:drawable="@drawable/image_selected" android:state_selected="false" /> </selector>
(кстати, похоже, что ваши имена для рисования или наоборот здесь)
Комментарии:
1. Есть идеи, @Nicolas?
2. Вы пробовали оба решения?
3. Да, оба и не работают, у меня есть
state_activate
и при нажатии на кнопку я добавляюmyButton.isActivated=true
, но ничего не меняю4. Не совсем исключено, что кнопка не обрабатывает
activated
состояние, в котором можно рисовать. Попробуйте использоватьisSelected
и измените атрибут состояния XML-селектора наandroid:state_selected
. Или вы уже пробовали это?