【发布时间】:2018-03-09 15:32:21
【问题描述】:
我想为另一个班级的TextView 设置ClickableSpan。在ClickableSpan 中,我需要覆盖updateDrawState() 和onClick() 这两个方法。前一种方法对所有TextViews 都相同,但后者onClick() 对任何TextView 都不同。所以我只想写一次updateDrawState() 方法(在Commons 类 中),而不是任何TextView。我怎样才能做到这一点?
以下代码块清楚地解释了我想要什么:
public class Commons {
...
public void makeSpannable(TextView tv, String text, int startIndex, int endIndex, ClickableSpan appendClickableSpan) {
SpannableString span = new SpannableString(text);
span.setSpan({
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(ContextCompat.getColor(Activation.this, R.color.textViewClickable));
ds.setUnderlineText(false);
appendClickableSpan;
}}, startIndex, endIndex, 0);
tv.setMovementMethod(LinkMovementMethod.getInstance());
tv.setText(span, TextView.BufferType.SPANNABLE);
}
...
}
和
public class Main {
...
TextView textView = findViewById(R.id.textView1);
String text = "some sample text";
new Commons().makeSpannable(textView, text, 2, 6, new ClickableSpan() {
@Override
public void onClick(View widget) {
if (validator.checkValidation(tilCode)) ResendActivationEmail();
}
});
...
}
【问题讨论】:
标签: java android textview spannable