Spannable相关方法

时间:2022-04-18 05:37:40

实现文本链接

其中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。