我想单独点击文本的几个部分,例如在下面的文本中:
天气预报一天,两天,七天.
我希望能够单独点击文本的三个不同区域,以获得一天,两天或七天的预测.我不想让它转到网页网址,只是抓住显示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)
归档时间: |
|
查看次数: |
7698 次 |
最近记录: |