监听 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>