• 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;
    @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

  • 相关阅读:
    java指定路径写、读文件
    [转]EP3C16Q240C8N 引脚说明
    [转]CMOS器件空闲管脚的处理
    [转]Altium Designer之多图纸设计
    [转]SDRAM驱动笔记
    [转]VHDL语言中方向字buffer与inout有什么异同
    [转]FPGA的边沿检测
    [转]FPGA中为什么要把NCEO设置为普通的IO口
    [转]SignalTap II使用方法简介
    [转]C-SPY
  • 原文地址:https://www.cnblogs.com/htynkn/p/Android_Linkify.html
Copyright © 2020-2023  润新知