在Android系统中EditText可以接收用户的输入,也可以进行简单的校验,但是我们通常使用的EditText接收输入有一定的约束。比如,邮件的输入框和电话号码的输入框等。本实例就带大家来实现约束格式的输入框
先看运行效果--有图有真想嘛~~~~
实例分析
实例想实现的效果是当在电话的输入框中输入正确的电话号码时输入框的文字是绿色,如果不是电话格式,则输入框文字是红色的。要想实现这样的效果,需要首先设置输入框的监听器-------
addTextChangedListener
然后在文字改变后的回调方法--afterTextChanged中判断输入的内容是否为电话格式,用正则表达式来判断匹配结果
代码实现
布局文件就不写了,比较简单~~
package shaolei.com.edittext_phone;代码说明:
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MainActivity extends Activity {
private EditText EtPhone;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
文本监听addTextChangedListener
TextWatcher
*/
EtPhone = ((EditText) findViewById(R.id.et_main));
EtPhone.addTextChangedListener(new TextWatcher() {
//文字改变前的回调方法
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
//文字改变时的回调方法
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
//文字改变后的回调方法
@Override
public void afterTextChanged(Editable s) {
//得到Editable对象的String
String phoneStr = s.toString();
//判断输入的内容是否为phone
boolean b = isPhoneNumber(phoneStr);
if (b) {
//如果b为true,设置EtPhone的字体颜色为绿色
EtPhone.setTextColor(Color.rgb(0, 255, 0));
} else {
////如果b为false,设置EtPhone的字体颜色为绿色
EtPhone.setTextColor(Color.rgb(255, 0, 0));
}
}
});
}
/**
* 方法名: isPhoneNumber
* 参数:String
* 返回值:boolean
* 方法作用:判断参数字符串是否为电话格式
*/
private boolean isPhoneNumber(String phoneStr) {
//定义电话格式的正则表达式
String regex = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
//设定查看模式
Pattern p = Pattern.compile(regex);
//判断Str是否匹配,返回匹配结果
Matcher m = p.matcher(phoneStr);
return m.find();
}
}
14行设置了文字监听器TextWatcher的对象。
等TextWatcher文字改变时会调用29-44行的afterTextChanged方法,然后更改文字颜色。
修改文本颜色前会对电话号码条件检查,这里用的正则表达式来实现。
===============================================
欢迎留言学习交流,觉得还不错就顶下咯