在TextView 中设置autoLink 属性可以自动识别Web
URL,电话号码,电子邮件地址添加下划线改变字体颜色并实现点击事件,支持自动识别的类型:
android:autoLink=“web” 匹配Web URL。
android:autoLink=“phone” 匹配电话号码
android:autoLink=“email” 匹配电子邮件地址
android:autoLink=“map” 匹配地理位置
android:autoLink=“all” 匹配所有可用的模式
android:autoLink=“none” 不匹配任何类型
也可以类似这样的设置 android:autoLink=“web|phone” 表示匹配web URL 和手机号
上面的属性也可以通过java 代码的形式对TextView 设置
setAutoLinkMask(int mask) 进行设置
1
设置的参数分别是:
Linkify.WEB_URLS 匹配Web UR
Linkify.PHONE_NUMBERS 匹配电话号码
Linkify.EMAIL_ADDRESSES 匹配电子邮件地址
Linkify.MAP_ADDRESSES 地理位置匹配
Linkify.ALL 匹配所有可用的模式
设置完antoLink属性,点击TextView中的链接时会跳转的对应的界面,比如点击网页的链接会跳转到系统的默认的浏览器界面,点击手机号会进入拨打电话界面,但是这都是系统默认的,我们可不可以进行拦截处理,跳转到我们指定的界面呢,当然是可以的。下面是我的拦截处理的方法。
继承 MovementMethod ,这里我们先看一下MovementMethod的源码,它的源码比较少
public class LinkMovementMethod extends
ScrollingMovementMethod {
private static final int
CLICK = 1;
private static final int
UP = 2;
private static final int
DOWN = 3;
@Override
public boolean
canSelectArbitrarily() {
return true;
}
@Override
protected boolean
handleMovementKey(TextView widget, Spannable buffer, int
keyCode,
int
movementMetaState, KeyEvent event) {
switch (keyCode) {
case
KeyEvent.KEYCODE_DPAD_CENTER:
case
KeyEvent.KEYCODE_ENTER:
if
(KeyEvent.metaStateHasNoModifiers(movementMetaState)) {
if (event.getAction() == KeyEvent.ACTION_DOWN
&&
event.getRepeatCount() == 0
&& action(CLICK, widget, buffer)) {
return
true;
}
}
break;
}
return super.handleMovementKey(widget, buffer,
keyCode, movementMetaState, event);
}
@Override
protected boolean
up(TextView widget, Spannable buffer) {
if (action(UP, widget, buffer)) {
return
true;
}
return super.up(widget, buffer);<