Android 开发问题:ClickableSpan 的点击事件没有生效
·
SpannableString spannableString = new SpannableString("Hello Android");
spannableString.setSpan(
new ClickableSpan() {
@Override
public void onClick(@NonNull View view) {
Toast.makeText(SpannableStringTestActivity.this, "点击了 Hello", Toast.LENGTH_SHORT).show();
}
},
0, 5,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
);
TextView tvContent = findViewById(R.id.tv_content);
tvContent.setText(spannableString);
- 在 Android 开发中,执行上述代码,ClickableSpan 的点击事件没有生效
问题原因
- TextView 默认不会处理 ClickableSpan 的点击事件,需要显式启用
处理策略
- 设置 LinkMovementMethod,TextView 才会拦截点击事件,并分发给对应的 ClickableSpan
// 关键
tvContent.setMovementMethod(LinkMovementMethod.getInstance());
更多推荐


所有评论(0)