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/");




转自:https://blog.csdn.net/deerbear/article/details/9663529

你可能感兴趣的:(移动开发)