ClickableSpan 可以支持在Textiew中,实现点击处理。但是文字颜色是固定的,无法修改。
这里通过查看ClickableSpan的定义和参考其它文档,实现了修改颜色的功能。
如下是我具体使用的例子,在updateDrawState中,重新设定链接文字的颜色。
public abstract class QuestionClickSpan extends ClickableSpan {
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
// 这里,根据当前状态,设定新的颜色和下划线。
if (m_bIsAnswered) {
ds.setColor(getAnsweredColor(ds));
ds.setUnderlineText(false);
}
}
// 设定状态,这里是boolean,为false时,使用默认颜色显示文字
// 为true时,使用定义的颜色。
private boolean m_bIsAnswered;
public void setAnswered(boolean b) {
m_bIsAnswered = b;
}
// 重载这个函数,给出新的颜色
protected int getAnsweredColor(TextPaint ds) {
return ds.linkColor;
}
}
参考ClickableSpan,代码如下: