没有为多跨度调用ClickableSpan OnClick

时间:2018-02-18 12:44:28

标签: android textview spannablestring

public class MyClickableSpan extends ClickableSpan {

    private String keyWord;
    Context context;

    public MyClickableSpan(String keyWord, Context context) {
        this.keyWord = keyWord;
        this.context = context;
    }

    @Override
    public void onClick(View widget) {
        Intent intent=new Intent(context, MyActivity.class);
        intent.putExtra("KeyWord",keyWord);
        context.startActivity(intent);

        // TODO do something
    }

    @Override
    public void updateDrawState(TextPaint ds) {
        super.updateDrawState(ds);
        ds.setUnderlineText(true);
        ds.setColor(Color.RED);
    }
}

当我向SpannableString添加多个span时,UpdateDrawState对所有单词都正常工作,并且所有目标单词都变为红色并加下划线,但OnClick仅针对第一个单词调用而其他单词不调用。

1 个答案:

答案 0 :(得分:0)

我使用htmlTextView.getText()来创建SpannableString,这些单词是html文本源中的链接单词,因此单击监听器无法正常工作 当我把它改成

SpannableString spannableString = htmlTextView.getText()。ToString();

它有效,但我丢失了文字的html设计。