在面试中,被问到这个问题,觉得还是有点难度的,答不上来。。。。。
今天上午百度看过了,实现Scannable这个接口,实现类有Editable, SpannableString, SpannableStringBuilder这些,用SpannableString比较方便,通过某些规则判断,如:@,#什么的,如果判断通过了的话就使用public abstract void setSpan (Object what, int start, int end, int flags)这个方法,这个方法是接口里面的抽象方法,what可以是文字也可以是你应用自己定义的类,start和end就不用说了吧。。。,flags的是标志位,具体用到看api就知道了
自己定义的类继承自ClickableSpan,复写onClick方法,这下这段文字点击之后就有自己的事件了,而自己定义的这个类new一个实例,用做setSpan的第一个参数,整个就穿起来了。其实里面的来龙去脉还是挺清晰的,就是以前确实没去实现过。
span的种类也比较多,都在android.text.style这个包下面,span我查了下字典,是跨度范围的意思。
就相当于在一段文字中,你画出一段范围,这段范围里面是有特殊意义的。继承范围之后,具体这个范围的究竟有什么意义,这究竟是是什么样式的范围,你自己去实现,包括范围的点击事件。这个东西还是非常灵活的,