AppCompatButton不使用选择器更改文本或背景



我有一个按钮,我定义了两个选择器——一个用于文本,一个用于背景。

文本颜色选择器

<?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>
    

    (顺便说一下,这似乎是你的名字,或者颠倒过来(

最新更新