zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    solaris 10 root忘记密码的解决方法
    c程序设计--指针与数组
    photoshop之色阶的使用
    Handling Errors Exceptionally Well in C++ 在C++中良好地捕获意外的错误
    自动换行 wordbreak:breakall和wordwrap:breakword
    透明度
    position:fixed在IE6下的实现
    JavaScript教程:常用DOM操作方法,JavaScriptDOM基本操作
    30 个免费的 UI 工具箱
    去掉虚线框兼容所有浏览器
  • 原文地址:https://www.cnblogs.com/yaxiaoke/p/5201239.html
Copyright © 2011-2022 走看看