zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    PHP在yii2中封装SuperSlide 幻灯片编写自己的SuperSlideWidget的例子
    安卓界面控件屏幕居中Layout例子
    java web的开发 知识要点
    PHP MVC简单介绍,对PHP当前主流的MVC做了一个总结
    自己编写的一个有关安卓应用开发培训PPT
    springboot配置fastjson后端往前端传输格式化
    实现商城商品秒杀分析
    idea添加jdbc包
    idea心得
    gc overhead limit exceeded内存问题
  • 原文地址:https://www.cnblogs.com/htynkn/p/Android_Linkify.html
Copyright © 2011-2022 走看看