我有一个按钮,该按钮具有与之关联的样式,该按钮将文本颜色设置为如下所示的颜色状态选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:color="@color/colorPrimary" />
<item android:state_pressed="false"
android:color="@color/colorAccent"/>
</selector>
我使用SpannableStringBuilder
为按钮创建文本,并在开始时使用ImageSpan
将drawable插入spannable中。
但是,根据以下问题的答案,此可绘制对象未遵循颜色状态选择器:Selector drawable in ImageSpan does not work?
因此,我决定在按钮上挂接一个onTouchListener来侦听ACTION_DOWN和ACTION_UP,以便重新设置跨度,交换ImageSpan
中的drawables颜色以反映所驱动的文本颜色通过颜色状态选择器。
它可以“工作”,但是跨度中可绘制的颜色在文本颜色之前几毫秒发生了变化。这必须意味着在我的state_pressed
中收到ACTION_DOWN
运动事件后不久,按钮onTouchListener
的状态就设置为true,这很令人生气,因为UI现在看起来像是越野车(可绘制的颜色改变了)文字“赶上”前几毫秒。
有人知道如何解决此问题吗?