实现Edittext 的错误时的提示,错误图标的位置边距得在xml的EditText中设置Layout_marginRight()设置右边距
final EditText accountET = (EditText) findViewById(R.id.edit_account);//find要设置错误提示的编辑框
accountET.setOnFocusChangeListener(new View.OnFocusChangeListener() {//设置状态改变监听器
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (accountET.hasFocus()==false){
checkPhone(accountET);
}else{
accountET.setError(null, null);//焦点聚焦时去除错误图标
}
}
});
/**
* 校验手机号是否合法
**/
private void checkPhone(EditText account) {
String phoneNumber = account.getText().toString();
if (!CommonUtil.validatePhoneNumber(phoneNumber)) {// 验证手机号是否合法
drawable.setBounds(new Rect(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight()));
Drawable drawable = getResources().getDrawable(R.drawable.img_edit_error);//错误时要显示的图片
//图片的大小,可调,四个参数为左上右下
account.setError(“err”, drawable);//设置错误的时候不显示文本,只显示图片在android 4.4上的机必须要有类似err的文本才会显示
}
}
--------------------------------------------另加一个类----------------------------------------
public class CommonUtil {
/**
* 验证手机号的格式是否合法
* @param number
* @return
*/
public static boolean validatePhoneNumber(String number) {
Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");//正则表达式
Matcher m = p.matcher(number);
return m.matches();
}
}
效果图为手机号位数不够错误提示,和重获焦点错误图标消失