实现文本链接

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

Spannable相关方法的更多相关文章

  1. Index of my articles

    65:一个表格说明RelativeLayout中的几个重要属性[Written By KillerLegend] (2013-10-16 21:59) 64:win7修改软件[授权给…]后面的名称 ( ...

  2. Android中View绘制流程以及invalidate()等相关方法分析

    [原文]http://blog.csdn.net/qinjuning 整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简 ...

  3. 解决数据标准及质量AppScan(测试)安全性问题相关方法

    1. SQL注入文件写入(需要用户验证) 解决办法:通过建立过滤器方法,对所有用户输入信息进行清理过滤.通过清理过滤用户输入所包含的危险字符,便可能防止恶意的用户导致应用程序执行计划外的任务,例如:启 ...

  4. Hibernate之Session对象的相关方法以及持久化对象的状态

    一.持久化对象的状态        站在持久化的角度, Hibernate 把对象分为 4种状态: 持久化状态,临时状态,游离状态,删除状态.Session 的特定方法能使对象从一个状态转换到另一个状 ...

  5. Hibernate之Session缓存以及操作Session缓存的相关方法

    1.Session概述 A.Session 接口是 Hibernate 向应用程序提供的操纵数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载 Java 对象的方法. B. Sessio ...

  6. Android中View绘制流程以及invalidate()等相关方法分析(转载的文章,出处在正文已表明)

    转载请注明出处:http://blog.csdn.net/qinjuning 前言: 本文是我读<Android内核剖析>第13章----View工作原理总结而成的,在此膜拜下作者 .同时 ...

  7. TextView使用Spannable设置复合文本

    http://blog.csdn.net/linghu_java/article/details/32053167 Spannable 对文字的编辑减少TextView的拼接并且达到改变一串字符中的部 ...

  8. Android在View拉丝工艺和invalidate()和其他相关方法

      转载请注明出处:http://blog.csdn.net/qinjuning 前言: 本文是我读<Android内核剖析>第13章----View工作原理总结而成的,在此膜拜下作者 . ...

  9. Android-----View绘制流程以及invalidate()等相关方法分析 .

    引自:http://blog.csdn.net/qinjuning/article/details/7110211 前言: 本文是我读<Android内核剖析>第13章----View工作 ...

随机推荐

  1. IOS 应用 退出的一个小方法

    AppDelegate * app=(AppDelegate *)[[UIApplication sharedApplication]delegate]; UIWindow *window = app ...

  2. css中内容生成器

    一,内容生成器:content 补充before和after伪类选择器: 1):将内容添加到某个选择器定义的单个或者多个元素的每一个实例之前或者之后 2)与before选择器配合使用(同理大家想下会不 ...

  3. iOS 画图讲解

    5.画图 (1)画线 //绘图代码写在drawRect里,view加载完成,需要显示的时候调用 //1.获取图形上下文 2.创建路径 3.把图形放入上下文 4.渲染上下文 //drawRect的rec ...

  4. HTML <input> 标签的 maxlength 属性

    前端的表单,需要进行验证. 结合JS表单验证框架,写了很多前端验证的代码. 其中,有这么一个需求:用户最多只能输入10个字符. 按照惯性,肯定是会去写JS表单验证了. 实际上,根本没有必要. HTML ...

  5. Tornado web.authenticated 用户认证浅析

    在Web服务中会有用户登录后的一系列操作, 如果一个客户端的http请求要求是用户登录后才能做得操作, 那么 Web服务器接收请求时需要判断该请求里带的数据是否有用户认证的信息. 使用Tornado框 ...

  6. hdu 3804 树链剖分

    思路:将边权排序,然后插入线段树,这样就可以直接用二分查找确定答案. #pragma comment(linker, "/STACK:1024000000,1024000000") ...

  7. linq to sql 增删改查

    ORM<Object Relation Mapping> Linq To Sql: 一.建立Linq To Sql 类 : 理解上下文类: Linq To Sql 类名+context 利 ...

  8. [转]移动App测试中的最佳做法

    Daniel Knott 用过各种不同编程语言和软件质量保证工具.他在软件开发和测试方面干了七年,自2010年起,他一直在德国汉堡的XING AG公司就职,几个项目里,比如XING调查和XING建议, ...

  9. Matplotlib之无GUI时的解决办法

    需添加: import matplotlib as mpl mpl.use('Agg') 而且必须添加在import matplotlib.pyplot之前,否则无效

  10. Cocos2d-JS使用CocosDenshion引擎

    Cocos2d-JS提供了一个音频CocosDenshion引擎.具体使用的API是cc.AudioEngine.cc.AudioEngine有几个常用的函数:playMusic(url, loop) ...