我有一个按钮,我定义了两个选择器——一个用于文本,一个用于背景。
文本颜色选择器
<?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
,也不更改按钮是我缺少的吗?
选定的与激活的不同。您需要使用其中一种:
-
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>
(顺便说一下,这似乎是你的名字,或者颠倒过来(