我在 TextView 上使用了 ClickableSpan。添加跨度后,应用它的文本颜色也发生了变化。
检查SO问题,我看到点击后颜色发生了变化。就我而言,渲染视图时颜色已经不同。
如何从 ClickableSpan 中删除颜色?
可点击的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
}
如果您不想手动指定颜色,您可以简单地“撤消”ClickableSpan 执行的 ds.color 覆盖。这将使跨度使用现有的文本颜色。
private class MyClickableSpan(
...
) : ClickableSpan() {
override fun updateDrawState(ds: TextPaint) {
val colour = ds.color
super.updateDrawState(ds)
ds.color = colour
}
...
}