使用ClickableSpan轻松实现一段文本中的多个点击事件

使用ClickableSpan轻松实现一段文本中的多个点击事件_第1张图片

    项目需求需要实现如上布局:红圈内都有点击事件且颜色不一样。

    1. 初始考虑用多个textview拼接,但是用普通线性和相对布局,无法实现换行,谷歌发现有现成的轮子自动换行布局android-flowlayout,使用发现此类布局空间都是通过计算当行剩余空间是否能够容下一个子view,如不能容下,另起一行去显示子view, 即,后面的空间如果不能容下发表内容,发表内容就会另起一行,这样布局很难看,可以有一个变通的方法就是内容分为两个textview,对于内容截取几个让第一个textview显示,剩余让第二个显示,相对好点但是局限性很大。

    2. 后来想到textview可以通过span设置不同的样式,google一下发现了ClickableSpan可以实现textview的点击事件,美了一下,如果可以支持一段话中不同的一段字支持不同的监听事件,这个布局需求岂不是很简单就能实现了,替换上面的测试,发现ClickableSpan和ForegroundColorSpan合作很完美的实现了需求。下面不再叙述了,用代码说明实现和实现中需要注意的地方。

    3.以第三条两个昵称为例说明:

使用ClickableSpan轻松实现一段文本中的多个点击事件_第2张图片

圈1:将上面的昵称和内容拼接到一块。
圈2:分开设置点击事件span
圈3:分别设置背景颜色span
    4. 需要注意的地方是默认clickablespan是有下划线的,可以重写span去掉下划线如下

使用ClickableSpan轻松实现一段文本中的多个点击事件_第3张图片


你可能感兴趣的:(UI效果--布局)