![d748a78616d9?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation](https://www.jianshu.com/p/d748a78616d9?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation)
先上效果:
![d748a78616d9?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation](https://www.jianshu.com/p/d748a78616d9?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation)
说明:
图中的EditText能够在失去焦点后验证输入框中的文本是否与正则表达式匹配,这里我设置的是5位整数(\d{5}),当输入110时,不匹配,边框变红并抖动,文本清除(gif中白色文本是因为录制的问题,实际文本已清除);输入12306,匹配,边框变绿。
实现方式
继承EditText,实现构造方法
注意构造方法中要传入官方的属性值,否则很多EditText属性不能在XML里面定义,并且EditText获取焦点后不会弹出软键盘。
public WarnningEditText(Context context) {
this(context, null);
}
public WarnningEditText(Context context, AttributeSet attrs) {
//这里构造方法也很重要,不加这个很多属性不能在XML里面定义
this(context, attrs, android.R.attr.editTextStyle);
}
public WarnningEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
//获取