監聽 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>