在state_pressed为真之前触发ACTION_DOWN运动事件

时间:2019-07-11 11:52:56

标签: android spannablestring

我有一个按钮,该按钮具有与之关联的样式,该按钮将文本颜色设置为如下所示的颜色状态选择器:

<?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现在看起来像是越野车(可绘制的颜色改变了)文字“赶上”前几毫秒。

有人知道如何解决此问题吗?

0 个答案:

没有答案