IT行业的年龄史
2008-11-25 09:17
260 查看
<h1>Android开发之Linkify</h1>
<p>/*</p>
<p>* Android开发之PopupWindow</p>
<p>*</p>
<p>* Created on: 2011-8-11</p>
<p>* Author: blueeagle</p>
<p>* Email: liujiaxiang@gmail.com</p>
<p>*/</p>
<p></p>
<p>Linkify是一个helper类,他会自动地在TextView类(或者TextView的派生类)中通过RegEx模式匹配来创建超链接。</p>
<p> 那些匹配一个特定的RegEx模式的文本都将会被转换为一个可以单击的超链接,这些超链接可以隐式地使用匹配的字符串作为目标URI来触发StartActivity(new Intent(Intent.ACTION_VIEW,uri))。可以指定任何希望转换为连接的字符串模式。</p>
<p> 静态的Linkify.addLinks方法可以通过接受View来建立链接,Linkify类提供并支持一种或者多种默认的内容类型的位掩码(bitmask):WEB_URLS、EMAIL_ADDRESSES、PHONE_NUMBERS和ALL。</p>
<p> 下面的代码段展示了如何通过一个TextView来把Web和E-mail地址显示为超链接。当单击这些超链接的时候,他们就会分别打开浏览器或者电子邮件服务器。</p>
<p> 可以使用android:autoLink属性来在一个布局资源内部linkify View。它支持下列一个或者多个(使用|分隔开)顾名思义的值:none,web,email,phone,或者all。</p>
<p> 在布局文件和JAVA文件中可以做如下设置:</p>
<p><TextView android:id="@+id/myTextView1"<br>
android:layout_width= "wrap_content"<br>
android:layout_height="wrap_content"<br>
android:autoLink="web|email|phone"><br>
</TextView><br>
通过在程序中设置<br>
myTextView1.setText(“http://www.baidu.com”);<br>
myTextView1.setText(“13800138000”);<br>
myTextView1.setText(“hello@163.com”);</p>
<p>也可以在string文件里设置字符串,同样,要用|字符分割开来。</p>
<p></p>
<p>下面对自定义的linkify做一些解释:搜索了一下,网上几乎所有的文章都是抄的Android高级编程这本书里的,希望大家在学习的时候多动动手,一下就抄过来真没意思。</p>
<p>自定义的linkify可以检测到特定字符串后,将其变为可点击的字符串形式从而可以从一个“源”中获取想要的东西。手册中对含有三个参数的addlinks这样写:</p>
<p>Applies a regex to the text of a TextView turning the matches into links. If links are found then UrlSpans are applied to the link text match areas, and the movement method for the text is changed to LinkMovementMethod.</p>
<p>那么用如下代码解析一下:</p>
<p align="left"> <strong>int</strong> flags = Pattern.<em>CASE_INSENSITIVE</em>;</p>
<p align="left"> Pattern p = Pattern.<em>compile</em>("\\bnews[0-9]*\\b", flags);</p>
<p align="left"> Linkify.<em>addLinks</em>(myTextview, p,"http://www.baidu.com/");</p>
<p align="left"> </p>
<p>这几行代码表示:[0-9]*表示通配符,0到9中没有或者有一个,<a>\\b</a>表示过滤掉前面的<a>\\b</a>当然你也可以写成”news[0-9]”;而所得的字符,将被添加到http://www.baidu.com/的后面;比如我在myTextView1.setText(“news1|news2|news”)设置以后,执行的结果将是有三个可以点击的文字,点击之后分别连接到<a href="http://www.baidu.com/news1">http://www.baidu.com/news1</a>;等当然,目前这个操作是对网页进行的操作,如果要对本地的内容提供器进行操作的话,就将后面的“源”写成content://。</p>
<p>当然,上述方法不适用于建立一个文字的超链接。对于文字超链接,可以使用如下的代码:</p>
<p align="left"> SpannableString sp = <strong>new</strong> SpannableString("点击百度");
</p>
<p align="left"> //设置超链接 </p>
<p align="left"> sp.setSpan(<strong>new</strong> URLSpan("http://www.baidu.com"), 2, 4,
</p>
<p align="left"> Spanned.<em>SPAN_EXCLUSIVE_EXCLUSIVE</em>); </p>
<p align="left"> myTextview.setText(sp);</p>
<p> myTextview.setMovementMethod(LinkMovementMethod.<em>getInstance</em>());
</p>
<p>别的都没什么问题,就看那个2,4代表字符串从第三个字符起到第四个字符结束。最后一句话表示这个文字可以点击。</p>
<p></p>
<p>对于Linkify的MatchFilter和Transform Filter我认为没有什么特别的研究价值。在这里不做多的说明了。</p>
<p></p>
<p>/*</p>
<p>* Android开发之PopupWindow</p>
<p>*</p>
<p>* Created on: 2011-8-11</p>
<p>* Author: blueeagle</p>
<p>* Email: liujiaxiang@gmail.com</p>
<p>*/</p>
<p></p>
<p>Linkify是一个helper类,他会自动地在TextView类(或者TextView的派生类)中通过RegEx模式匹配来创建超链接。</p>
<p> 那些匹配一个特定的RegEx模式的文本都将会被转换为一个可以单击的超链接,这些超链接可以隐式地使用匹配的字符串作为目标URI来触发StartActivity(new Intent(Intent.ACTION_VIEW,uri))。可以指定任何希望转换为连接的字符串模式。</p>
<p> 静态的Linkify.addLinks方法可以通过接受View来建立链接,Linkify类提供并支持一种或者多种默认的内容类型的位掩码(bitmask):WEB_URLS、EMAIL_ADDRESSES、PHONE_NUMBERS和ALL。</p>
<p> 下面的代码段展示了如何通过一个TextView来把Web和E-mail地址显示为超链接。当单击这些超链接的时候,他们就会分别打开浏览器或者电子邮件服务器。</p>
<p> 可以使用android:autoLink属性来在一个布局资源内部linkify View。它支持下列一个或者多个(使用|分隔开)顾名思义的值:none,web,email,phone,或者all。</p>
<p> 在布局文件和JAVA文件中可以做如下设置:</p>
<p><TextView android:id="@+id/myTextView1"<br>
android:layout_width= "wrap_content"<br>
android:layout_height="wrap_content"<br>
android:autoLink="web|email|phone"><br>
</TextView><br>
通过在程序中设置<br>
myTextView1.setText(“http://www.baidu.com”);<br>
myTextView1.setText(“13800138000”);<br>
myTextView1.setText(“hello@163.com”);</p>
<p>也可以在string文件里设置字符串,同样,要用|字符分割开来。</p>
<p></p>
<p>下面对自定义的linkify做一些解释:搜索了一下,网上几乎所有的文章都是抄的Android高级编程这本书里的,希望大家在学习的时候多动动手,一下就抄过来真没意思。</p>
<p>自定义的linkify可以检测到特定字符串后,将其变为可点击的字符串形式从而可以从一个“源”中获取想要的东西。手册中对含有三个参数的addlinks这样写:</p>
<p>Applies a regex to the text of a TextView turning the matches into links. If links are found then UrlSpans are applied to the link text match areas, and the movement method for the text is changed to LinkMovementMethod.</p>
<p>那么用如下代码解析一下:</p>
<p align="left"> <strong>int</strong> flags = Pattern.<em>CASE_INSENSITIVE</em>;</p>
<p align="left"> Pattern p = Pattern.<em>compile</em>("\\bnews[0-9]*\\b", flags);</p>
<p align="left"> Linkify.<em>addLinks</em>(myTextview, p,"http://www.baidu.com/");</p>
<p align="left"> </p>
<p>这几行代码表示:[0-9]*表示通配符,0到9中没有或者有一个,<a>\\b</a>表示过滤掉前面的<a>\\b</a>当然你也可以写成”news[0-9]”;而所得的字符,将被添加到http://www.baidu.com/的后面;比如我在myTextView1.setText(“news1|news2|news”)设置以后,执行的结果将是有三个可以点击的文字,点击之后分别连接到<a href="http://www.baidu.com/news1">http://www.baidu.com/news1</a>;等当然,目前这个操作是对网页进行的操作,如果要对本地的内容提供器进行操作的话,就将后面的“源”写成content://。</p>
<p>当然,上述方法不适用于建立一个文字的超链接。对于文字超链接,可以使用如下的代码:</p>
<p align="left"> SpannableString sp = <strong>new</strong> SpannableString("点击百度");
</p>
<p align="left"> //设置超链接 </p>
<p align="left"> sp.setSpan(<strong>new</strong> URLSpan("http://www.baidu.com"), 2, 4,
</p>
<p align="left"> Spanned.<em>SPAN_EXCLUSIVE_EXCLUSIVE</em>); </p>
<p align="left"> myTextview.setText(sp);</p>
<p> myTextview.setMovementMethod(LinkMovementMethod.<em>getInstance</em>());
</p>
<p>别的都没什么问题,就看那个2,4代表字符串从第三个字符起到第四个字符结束。最后一句话表示这个文字可以点击。</p>
<p></p>
<p>对于Linkify的MatchFilter和Transform Filter我认为没有什么特别的研究价值。在这里不做多的说明了。</p>
<p></p>
相关文章推荐
- IT行业过劳死年龄最低 京沪六成白领过劳
- IT行业过劳死年龄最低 京沪六成白领过劳
- IT行业歧视40岁以上人群为找工作还要谎报年龄[转]
- IT行业计算机应用基础 总结
- IT行业中的性别差距:程序员MM在哪呢?
- IT行业打拼7年,现35岁了很迷茫(转自csdn 一个IT人的感言)
- 从.NET和Java之争谈IT这个行业[转]
- 应届毕业生如何跨入IT行业
- 提升国内金融行业IT应变能力之SOA
- 计算机专业毕业只能从事 IT 行业么?
- IT行业是吃青春饭的吗?
- 2012年中国IT 行业的发展现状分析
- IT行业发展之已见
- it行业计算机考试认证全集
- 2011年最新名企薪酬系列——IT行业
- 在IT行业中,如何拿到15K的月薪?
- 在IT行业中,如何拿到15K的月薪?
- IT行业最重要的四件宝--我的实习体会
- 坦然面对IT行业的面试
- 在IT行业中,如何拿到15K的月薪?