Android自动匹配电子邮件地址,网址,电话--谈Linkify的使用

长平狐 发布于 2013/11/25 11:38
阅读 327
收藏 0

翻看Android Api,无意看到了Linkify。按照Api的说明,Linkify可以转化符合匹配规则的文字为可点击的连接。

感觉这个还是有点用处,下面来试一试。

1.新建一个项目

SpxImage

2.修改样式文件

为了方便查看效果,添加一个EditText和一个TextView

SpxImage

代码如下:

< class="brush:html;gutter:false;"><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:weightSum="1"> <EditText android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/inputText"> <requestFocus></requestFocus> </EditText> <TextView android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_width="fill_parent" android:layout_weight="0.08" android:id="@+id/viewText" android:text="请输入内容"></TextView> </LinearLayout>

3.修改AndroidLearnActivity.java

看一下关键部分的说明

SpxImage

在本例子中我们使用第一个。再看一看Linkify默认支持识别什么。

SpxImage

MAP_ADDRESSES我没有理解到…

下面看一下完整的代码:

package cn.ghy.sdx;

import android.app.Activity;
import android.os.Bundle;
import android.text.util.Linkify;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.EditText;
import android.widget.TextView;

public class AndroidLearnActivity extends Activity {
EditText editText;
TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText=(EditText) this.findViewById(R.id.inputText);
textView=(TextView) this.findViewById(R.id.viewText);
editText.setOnKeyListener( new OnKeyListener() {

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
textView.setText(editText.getText());
Linkify.addLinks(textView, Linkify.EMAIL_ADDRESSES|Linkify.PHONE_NUMBERS|Linkify.WEB_URLS);
return false;
}
});
}
}

 

效果:

网址:

2011-11-02-09-46-44

电话:

2011-11-02-09-47-30

邮箱:

2011-11-02-09-47-17

学习进阶:

Linkify自带的几种基本可以满足需要,但是有时候有更灵活的需要。比如我需要用户输入一个身份证号。

正则我不是很清楚,用个简单的。

textView.setText(editText.getText());
Pattern pattern = Pattern.compile("\\d{15}|\\d{18}");
String scheme="http://chaxun?sfz="; // 这是随意写哈
Linkify.addLinks(textView, pattern, scheme);

效果:

2011-11-02-10-02-08


原文链接:http://www.cnblogs.com/htynkn/archive/2011/11/02/Android_Linkify.html
加载中
返回顶部
顶部