Android——Linkify辅助类

Linkify是一个辅助类,通过RegEX样式匹配,自动在TextView类中创建超链接。符合特定的RegEX样式的文本会被转变成可点击的超链接,这些超链接隐式地调用startActivity(new Intent(Intent.ACTION_VIEW,uri)),符合的文本作为目标URI。用户可以指定任意的字符串样式为链接;为了更加方便,Linkify类提供了预置的通用内容类型(如电话号码和emailweb地址等)。

1.       本地的链接类型

Linkify.addLinks静态方法能够接受一个View来制作链接,即实现View内容和系统之间的链接。Linkify类提供了一些内容类型:WEB_URLSEMAIL_ADDRESSESPHONE_NUMBERSALL

代码中:

tv=(TextView)findViewById(R.id.mv);

Linkify.addLinks(tv, Linkify.PHONE_NUMBERS|Linkify.EMAIL_ADDRESSES|Linkify.WEB_URLS);

XML文件中:

<TextView 

    android:id="@+id/mv"

    android:layout_width="wrap_content" 

    android:layout_height="wrap_content" 

    android:text="@string/linkify_me"

    android:autoLink="phone|email|web"

/>

2.       创建自定义的链接字符串

tv1=(TextView)findViewById(R.id.mv1);

int flags=Pattern.CASE_INSENSITIVE;

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

Linkify.addLinks(tv1,p,"http://www.baidu.com/s?wd=");//pattern的文字会追加到link后面

3.       支持TransformFilterMatchFilter接口

Linkify还支持TranformFilterMatchFilter接口。它们提供一些对目标URI的额外控制和定义匹配字符串,它们的使用如下的框架代码所示

Linkify.addLinks(myTextView, pattern, prefixWith,

  new MyMatchFilter(), new MyTransformFilter());

4.       使用Match Filter

在你定义的MatchFilter中实现acceptMatch方法,来为RegEx样式匹配添加额外的条件。当一个潜在的匹配发现时,acceptMatch被触发,匹配的开始点和结束点(包括被查找的整个文本)以参数的形式传入。

class MyMatchFilter implements MatchFilter {

    public boolean acceptMatch(CharSequence s, int start, int end) {

       return (start == 0 || s.charAt(start-1) != !);

    } }

5.       使用Transform Filter

Transform Filter为格式化文本字符串提供了更大的自由度,允许你修改由链接文本自动生成的隐式URI。减少链接文本和目标URI的耦合能更加自由地决定如何显示数据字符串给用户。

class MyTransformFilter implements TransformFilter {

    public String transformUrl(Matcher match, String url) {

       return url.toLowerCase();

    }

 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值