标签: Android

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

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

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

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

    1.新建一个项目

    SpxImage

    2.修改样式文件

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

    SpxImage

    代码如下:

    <?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;@OverridepublicvoidonCreate(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() {@OverridepublicbooleanonKey(View v,int keyCode, KeyEvent event) { textView.setText(editText.getText()); Linkify.addLinks(textView, Linkify.EMAIL_ADDRESSES|Linkify.PHONE_NUMBERS|Linkify.WEB_URLS);returnfalse; } }); 
      } 
    }

    效果如下:

    网址:

    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