Spannable相关方法

实现文本链接

其中tv是TextView类型的控件。只需写java代码即可实现链接,无需在xml文件中进行其他的设置。

  1. SpannableString spanTxt = new SpannableString("欢迎访问我的博客——Killerlegend的博客……");   
  2.         spanTxt.setSpan(new URLSpan("http://www.cnblogs.com/killerlegend/"), 0, spanTxt.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);   
  3.         tv.append("\n"+"\n"+"\n");   
  4.         tv.append(spanTxt);   
  5.         //让URLSpan可以点击   
  6.         tv.setMovementMethod(new LinkMovementMethod());  

setSpan方法的定义如下:

public abstract void setSpan (Object what, int start, int end, int flags)

flags含义请参见:

https://developer.android.com/reference/android/text/Spanned.html

下面说几种比较常用的flags,关于下面的这几种flags的意义,都是指定对于在span中新加入字符时如何处理的。

public static final int SPAN_EXCLUSIVE_EXCLUSIVE
public static final int SPAN_POINT_MARK

以上两者等价。均不包含文本首尾。即在该文本的首尾加入新的字符,那么span的设置是不会应用到新加入的字符的。以下其他可以类比推理。

public static final int SPAN_EXCLUSIVE_INCLUSIVE

不包含首,包含尾。

public static final int SPAN_INCLUSIVE_EXCLUSIVE

包含首,不包含尾。

public static final int SPAN_INCLUSIVE_INCLUSIVE
public static final int SPAN_MARK_POINT

以上两者等价。均包含首尾。

常见的Object有:

URLSpan():其中可以为一个网址或者电话号,用于链接比如:

URLSpan(http://user.qzone.qq.com/1191509410/main)

URLSpan("tel:1008611")

BackgroundColorSpan(Color.parseColor(String para))

ForegroundColorSpan(Color.parseColor(String para))

分别用于设置span的背景前景色,其中的para为字符类型。

……(后续仍会加入……)

最后不要忘记了:

Object.setMovementMethod(LinkMovementMethod.getInstance());

Object.setText(span)

以应用span。

posted @ 2013-08-06 18:13  KillerLegend  Views(439)  Comments(0Edit  收藏  举报