ClickableSpan - 添加后如何删除文本上的颜色?

问题描述 投票:0回答:2

我在 TextView 上使用了 ClickableSpan。添加跨度后,应用它的文本颜色也发生了变化。

检查SO问题,我看到点击后颜色发生了变化。就我而言,渲染视图时颜色已经不同。

如何从 ClickableSpan 中删除颜色?

android textview clickablespan
2个回答
12
投票

可点击的span有updateDrawState(TextPaint ds)方法。也为可点击范围设置与文本颜色相同的颜色。所以它看起来是一样的(第二个方法)

@Override public void updateDrawState(TextPaint ds) {
    //super.updateDrawState(ds);
    ds.setColor(linkColor);
    ds.setUnderlineText(false); // set to false to remove underline
}

0
投票

如果您不想手动指定颜色,您可以简单地“撤消”ClickableSpan 执行的 ds.color 覆盖。这将使跨度使用现有的文本颜色。

private class MyClickableSpan(
    ...
) : ClickableSpan() {
    
    override fun updateDrawState(ds: TextPaint) {
        val colour = ds.color
        super.updateDrawState(ds)
        ds.color = colour
    }

    ...
}

© www.soinside.com 2019 - 2024. All rights reserved.