Android Clickable TextView如何在文本上创建多个单击区域和捕获区域选择

Android Clickable TextView如何在文本上创建多个单击区域和捕获区域选择,android,Android,我想使文本的几个部分可以单独单击,例如在下面的文本中: 预测一天、两天、七天的天气 我希望能够分别点击文本的三个不同区域,以获得一天、两天或七天的预测。我不想让它转到一个网页URL,而只是捕捉显示TextView的活动中文本区域的点击 您应该能够使用。基本上,您需要创建一个SpannableStringBuilder,附加文本部分,并为每个可单击文本部分设置不同的可单击span SpannableStringBuilder sb = new SpannableStringBuilder(); S

我想使文本的几个部分可以单独单击,例如在下面的文本中:

预测一天、两天、七天的天气


我希望能够分别点击文本的三个不同区域,以获得一天、两天或七天的预测。我不想让它转到一个网页URL,而只是捕捉显示TextView的活动中文本区域的点击

您应该能够使用。基本上,您需要创建一个
SpannableStringBuilder
,附加文本部分,并为每个可单击文本部分设置不同的可单击span

SpannableStringBuilder sb = new SpannableStringBuilder();
String regularText = "This text is ";
String clickableText = "clickable";
sb.append(regularText);
sb.append(clickableText);
sb.setSpan(new ClickableSpan(), sb.length()-clickableText.length(), sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
TextView tv = ...
tv.setText(sb);
这只是一个演示如何设置单个ClickableSpan的示例。显然,在循环中执行上述操作并在每次迭代中设置一个新的跨度更有意义

但是,由于ClickableSpan是一个抽象类,因此首先需要使用自己的具体实现对其进行扩展。更具体地说,需要实现onClick方法来处理单击事件

另外,不要忘记将MovementMethod设置为TextView,例如LinkMovementMethod:

tv.setMovementMethod(LinkMovementMethod.getInstance());
可能重复的