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

Cod*_*oid 6 android

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

天气预报一天,两天,七天.

我希望能够单独点击文本的三个不同区域,以获得一天,两天或七天的预测.我不想让它转到网页网址,只是抓住显示TextView的活动内部文本区域的点击.

MH.*_*MH. 14

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

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);
Run Code Online (Sandbox Code Playgroud)

这只是一个示例,说明如何设置单个ClickableSpan.显然,在循环中执行上面并在每次迭代中设置新的跨度会更有意义.

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

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

tv.setMovementMethod(LinkMovementMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)