Android EditText内容监听

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android EditText内容监听相关的知识,希望对你有一定的参考价值。

 监听 EditText的内容变化,作出对应的处理。

 

技术分享

MainActivity.class

 

package com.example.edittextdemo;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {
    EditText edit_phone;
    Button btn_next;
    String okdata;
    TextView monitor_edit;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EditText edit_Id = (EditText) findViewById(R.id.edit_Id);
        btn_next = (Button) findViewById(R.id.btn_next);
        monitor_edit = (TextView) findViewById(R.id.monitor_edit);
        btn_next.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (!isId(okdata)) {
                    monitor_edit.setText("请输入正确的身份证号!");
                }
            }
        });
        // EditText焦点的监听
        edit_Id.setOnFocusChangeListener(new OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                // 当hasFocus = true 是获取焦点
                if (!hasFocus) {
                    if (!isId(okdata)) {
                        monitor_edit.setText("请输入正确的身份证号!");
                    }
                }
            }
        });
        // 对EditText内容的实时监听
        edit_Id.addTextChangedListener(new TextWatcher() {

            // 第二个执行
            @Override
            public void onTextChanged(CharSequence s, int start, int before,int count) {
                System.out.println("onTextChanged:" + "start:" + start + "before:" + before + "count:" + count);
            }

            // 第一个执行
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,int after) {
                System.out.println("beforeTextChanged:" + "start:" + start + "count:" + count + "after:" + after);
            }

            // 第三个执行
            @Override
            public void afterTextChanged(Editable s) { // Edittext中实时的内容
                System.out.println("afterTextChanged:" + s);
                okdata = s.toString();
                if (isId(s.toString())) {
                    monitor_edit.setText("正确!");
                }else {
                    monitor_edit.setText("请输入正确的身份证号!");
                }

            }
        });
    }

    /**
     * 是否为身份证
     * 
     * @param idStr
     * @return
     */
    public static boolean isId(String idStr) {
        String regex = "^[0-9]{17}[0-9|xX]{1}$";
        if (idStr == null || "".equals(idStr.trim())) {
            return false;
        } else if (idStr.matches(regex)) {
            return true;
        }

        return false;
    }
}

 

activity_main.xml

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/edit_Id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@null"
        android:hint="输入身份证号" />

    <TextView
        android:id="@+id/monitor_edit"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:textColor="#FF0000" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="19dp"
        android:background="@null"
        android:hint="输入姓名" />

    <Button
        android:id="@+id/btn_next"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="下一步(模仿)" />

</LinearLayout>

 

以上是关于Android EditText内容监听的主要内容,如果未能解决你的问题,请参考以下文章

Android限制EditText只能输入中文或者指定内容的实现

android EditText控件有没有离开监听事件

Android Edittext 显示光标 获取焦点 监听焦点

Android开发中给EditText控件添加TextWatcher监听实现对输入字数的限制

android 通过监听edittext实现button的点击事件

Android中EditText焦点问题