android:autoLink和Linkify

android:autoLink="web"-设置自动识别链接,值web为匹配Web网址

android:autoLink="phone"-设置自动识别链接,值phone为匹配电话号码

android:autoLink="email"-设置自动识别链接,值email为匹配Email地址

android:autoLink="all"-设置自动识别链接,值all为匹配所有

 

Linkify是一个辅助类,通过RegEx样式匹配,自动地在TextView类(和继承的类)中创建超链接。

         符合特定的RegEx样式的文本会被转变成可点击的超链接,这些超链接隐式地调用startActivity(new Intent(Intent.ACTION_VIEW, uri)),符合的文本会作为目标URI。

         你可以指定任意的字符串样式为链接;Linkify类提供了预置的通用内容类型(如电话号码和e-mail、web地址)。Linkify.addLinks()静态方法接受一个View来制作链接,还包括一个或多个支持的默认内容类型的位结果。Linkify类提供了一些内容类型:WEB_URLS、EMAIL_ADDRESSES、PHONE_NUMBERS和ALL。接下来的代码片段显示如何为TextView制作链接显示web和e-mail地址为超链接。当点击时,它们会相应地打开浏览器或e-mail应用程序。

         TextView myTextView = (TextView)findViewById(R.id.myTextView);

         Linkify.addLinks(myTextView, Linkify.WEB_URLSLinkify.EMAIL_ADDRESSES);

或者

         TextView myTextView = (TextView)findViewById(R.id.myTextView);

         myTextView.setAutoLinkMask(Linkify.EMAIL_ADDRESSES|Linkify.MAP_ADDRESSES|Linkify.PHONE_NUMBERS);

    myTextView.setMovementMethod(LinkMovementMethod.getInstance());

删除链接:

         myTextView.setAutoLinkMask(0);

可是有时候我们需要自定义一些超链接,像新浪微博中的@和#,这时候怎么办呢?

为了定义自己的链接字符串,你需要创建一个RegEx样式来匹配文本,进而显示成超链接。和本地类型一样,通过调用Linkify.addLinks来指定目标View,但这次,传入的是的RegEx样式。你还可以传入一个前缀,当链接点击时,它会添加到目标URI上。例如:

         Pattern p = Pattern.compile("\\bquake[-9]*\\b", Pattern.CASE_INSENSITIVE);

         Linkify.addLinks(myTextView, p, "content://com.paad.earthquake/earthquakes/");

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值