EditText监听以及手机号校验
2017-09-30 本文已影响0人
Rambo_Y
EditText监听思路
对想被监听的EditText使用焦点事件方法setOnFocusChangeListener()方法,当失去焦点时在方法中定义逻辑。
实例demo结合简单的手机号校验
EditText中监听接口TextWatcher,有三个成员方法
-
beforeTextChange():文本内容将要被改变的时候调用。
-
onTextChanged():文本内容改变过程中调用。
-
afterTextChanged():文本内容输入完成之后调用。
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()方法中文本内容和定义的数组使用match()方法去比对。
第一位数的校验 使用startsWith("1")方法或者定义一个数组 String num = [1];
多位数的校验 通过数组 String num = [1] [345678] [23456] ...
11位手机号校验 通过正则表达式 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中的手机号进行校验,当点击第二个EditText时对第一个EditText中的手机号进行进一步校验,该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中的输入内容
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();
}
}
});
}
}