EditText監(jiān)聽思路
對想被監(jiān)聽的EditText使用焦點事件方法setOnFocusChangeListener()方法,當(dāng)失去焦點時在方法中定義邏輯澳泵。
實例demo結(jié)合簡單的手機號校驗
EditText中監(jiān)聽接口TextWatcher,有三個成員方法
beforeTextChange():文本內(nèi)容將要被改變的時候調(diào)用。
onTextChanged():文本內(nèi)容改變過程中調(diào)用。
afterTextChanged():文本內(nèi)容輸入完成之后調(diào)用今阳。
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
手機號段校驗
在afterTextChanged()方法中文本內(nèi)容和定義的數(shù)組使用match()方法去比對师溅。
第一位數(shù)的校驗 使用startsWith("1")方法或者定義一個數(shù)組 String num = [1];
多位數(shù)的校驗 通過數(shù)組 String num = [1] [345678] [23456] ...
11位手機號校驗 通過正則表達(dá)式 String num = "[1][345678]\d{9}";
activity_main.xml
定義兩個EditText
<EditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="請輸入"
android:maxLength="11"/>
<EditText
android:id="@+id/edit_text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="試一試"
/>
mainActivity
對第一個EditText中的手機號進(jìn)行校驗,當(dāng)點擊第二個EditText時對第一個EditText中的手機號進(jìn)行進(jìn)一步校驗盾舌,該demo主要針對多輸入框的注冊 頁面险胰。
public class MainActivity extends AppCompatActivity {
EditText mEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditText = (EditText) findViewById(R.id.edit_text);
//焦點事件
mEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
//校驗11位手機號
String num = "[1][345678]\\d{9}";
// 獲取EditText中的輸入內(nèi)容
final String inputText = mEditText.getText().toString();
if(inputText.length()==11 & inputText.matches(num)==false){
Toast.makeText(MainActivity.this, "請輸入正確的手機號", Toast.LENGTH_SHORT).show();
}else if(inputText.length()<11){
Toast.makeText(MainActivity.this, "請輸入正確的手機號", Toast.LENGTH_SHORT).show();
}
}else {
}
}
});
//EditText的點擊事件
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
String num = "[1][345678]\\d{9}";
if (TextUtils.isEmpty(s.toString())){
Toast.makeText(MainActivity.this, "手機號不能為空", Toast.LENGTH_SHORT).show();
}else if(s.length()==11&s.toString().matches(num)==false){
Toast.makeText(MainActivity.this, "請輸入正確的手機號碼", Toast.LENGTH_SHORT).show();
}
}
});
}
}