我想使文本的几个部分分别点击,例如在下面的文本:
I want to make several parts of text individually clickable for example in the text below:
获取FORCAST有一天,天气两日,七的日子。
Get the weather forcast one day, two day, seven day.
我希望能够点击的文字单独三个不同的区域来获得某一天,一日二,7天FORCAST。我不希望这转到一个网页的URL,但正好赶上上所显示的TextView活动内的文本区域的点击。
I want to be able to click individually three different regions of the text to get one day, two day or seven day forcast. I don't want this to goto a web page URL but just catch the click on the region of text inside the activity that is showing the TextView.
您应该能够完成,使用ClickableSpan.基本上你需要创建一个 SpannableStringBuilder
,追加文本部分,并设置不同的ClickableSpan为每个点击的文本部分。
You should be able to accomplish that using ClickableSpan
. Basically you need to create a SpannableStringBuilder
, append the text parts and set a different ClickableSpan for each clickable text part.
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一个例子。很显然,这会更有意义上面做一个循环,并设置了新的跨越与每个迭代。
This is just an example illustrating how to set a single ClickableSpan. Obviously it will make more sense to do above in a loop and set a new span with each iteration.
然而,由于ClickableSpan是一个抽象类,您首先需要将其与自己的具体实现扩展。更具体地说,onClick的方法将需要实施处理点击事件。
However, since ClickableSpan is an abstract class, you'll first need to extend it with your own concrete implementation. More specifically, the onClick method will need to be implemented to handle click events.
另外,不要忘了一个MovementMethod设置为TextView的,例如: LinkMovementMethod:
Also, don't forget to set a MovementMethod to the TextView, e.g. LinkMovementMethod:
tv.setMovementMethod(LinkMovementMethod.getInstance());
上一篇:安卓:哪个响应code的确在应用程序在超时的计费V3的回报?应用程序、code
下一篇:错误构建APK时 - "多DEX文件定义LCOM /谷歌/广告/广告"广告、定义、错误、文件