简单易用的Android校验库。
这是一个简单Android校验库,按配置来验证用户输入的表单信息。
仅仅须要几行代码,就可以验证用户输入,而且将验证错误反馈给用户。
它内置了大量经常使用的验证类型,足以满足你的功能需求。
它另一个可扩展的验证选项。你能够通过扩展接口加入你须要的验证方式。
Gradle
依赖
Add repository
dependencies {
compile 'com.github.chenyoca:android-validation:1.0@aar'
}
Maven
com.github.chenyocaandroid-validation1.0aarprovided
已内置支持的校验方式
Required 必填选项
NotBlank 非空数据
Digits 仅数字
IsDate 是否为有效日期
IsTime 是否为有效时间
IsDateTime 是否为有效的日期和时间
IsFuture 是否为当前时间之后的日期和时间
IsPast 是否为当前时间之前的日期和时间
Email 电子邮件
EqualTo 与指定值同样
Host 主机地址
URL Http URL
IPv4 IPv4地
RangeLength 指定长度范围
MinLength 最小长度
MaxLength 最大长度
Numeric 数值
CreditCard 信用卡号
RangeValue 最值范围
MinValue 最小值
MaxValue 最大值
MobilePhone 中国的手机号码
How
to usage - 怎样使用
通过 View ID 来绑定校验配置信息
对表单内各个EditText绑定其校验配置
// 自己定义显示出错消息的方式,默认是在 EditText 右边显示一个浮动提示框。
MessageDisplay messageDisplay = new MessageDisplay() {
@Override
public void dismiss(EditText field) {
field.setError(null);
}
@Override
public void show(EditText field, String message) {
field.setError(message);
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
}
};
// 绑定表单View
final LinearLayout form = (LinearLayout) findViewById(R.id.form);
// 默认是在 EditText 右边显示一个浮动提示框。
// final FormValidator av = new FormValidator(form);
// 指定自己定义显示出错消息的方式,
final FormValidator av = new FormValidator(form, messageDisplay);
av.add(R.id.form_field_1, Type.Required, Type.MobilePhone);
av.add(R.id.form_field_2, Type.CreditCard);
av.add(R.id.form_field_3, Type.Digits, Type.MaxLength.value(20));
av.add(R.id.form_field_4, Type.Email);
// 使用`ValuesLoader`使得当校验时。才载入校验參数`values`。
av.add(R.id.form_field_5, Type.EqualsTo.values(new TextViewValuesLoader(form,R.id.form_field_4)));
av.add(R.id.form_field_6, Type.Host);
av.add(R.id.form_field_7, Type.URL);
av.add(R.id.form_field_8, Type.MaxLength.value(5));
av.add(R.id.form_field_9, Type.MinLength.value(4));
av.add(R.id.form_field_10, Type.RangeLength.values(4,8));
av.add(R.id.form_field_11, Type.NotBlank);
av.add(R.id.form_field_12, Type.Numeric);
av.add(R.id.form_field_13, Type.MaxValue.value(100));
av.add(R.id.form_field_14, Type.MinValue.value(20));
av.add(R.id.form_field_15, Type.RangeValue.values(18,30));
// 加入不在Form中的输入框
EditText inputNotInForm = (EditText)findViewById(R.id.input_not_in_form);
av.add(inputNotInForm, Type.IsTime);
// 输出调试信息
av.debug(true);
// 应用输入框的输入法布局样式
av.applyInputType();
TestResult r = av.test();
if(r.passed){
// 校验通过
}else{
// 校验失败
}
怎样扩展?
通过 FormValidator 的扩展接口,加入你自己定义的校验实现类
// 加入到某个ViewID的输入对象中:
formValidator.add(R.id.username, new AbstractValidator("出错时。此消息被返回并显示到EditText中") {
@Override
public boolean test(String inputValue) {
// 校验通过时返回 true
return inputValue.equal("AABB");
}
});
// 加入到某个View的输入对象中:
formValidator.add(passwordInput, new AbstractValidator("出错时,此消息被返回并显示到EditText中") {
@Override
public boolean test(String inputValue) {
// 校验通过时返回 true
return inputValue.equal("CCDD");
}
});
注意
校验顺序
校验顺序按add(...)加入配置的顺序进行校验。
假设加入 Required 校验类型,则 Required 不管在哪个顺序被加入,都会被首先校验。
Required校验类型对其他类型的影响:
当EditText为空值时,假设加入Required校验规则。则校验失败。假设没有,则校验通过并跳过后面的校验类型。
自己定义消息
自己定义消息中假设须要与 value(...) / values(...) 中的參数匹配。请使用 {$1} 和 {$2} 做占位符。
e.g:
Types.MaxLength.values(10,140).message("您最多能够输入{$1}到{$2}个文字!
");
当校验失败时。提示的消息内容为:您最多能够输入10到140个文字!
其他扩展接口
将校验条件应用到EditText中
如“最大长度”、“邮件地址”等校验条件。能够将EditText的输入类型自己主动切换至对应类型。
获取Form中被校验EditText的值
String username = validator.getValue(R.id.form_field_1);
获取Form中没有被校验EditText的值
String username = validator.getExtraValue(R.id.form_field_others);
获取Form中被校验EditText的对象
EditText username = validator.getView(R.id.form_field_1,EditText.class);
Contact
- 交流方式
QQ: 228441083
QQ群:106904788