简单易用的Android校验库。
这是一个简单Android校验库,按配置来验证用户输入的表单信息。
仅仅须要几行代码,就可以验证用户输入,而且将验证错误反馈给用户。
它内置了大量经常使用的验证类型,足以满足你的功能需求。
它另一个可扩展的验证选项。你能够通过扩展接口加入你须要的验证方式。
Gradle 依赖
Add repository
dependencies {compile 'com.github.chenyoca:android-validation:1.0@aar'}
Maven
<dependency><groupId>com.github.chenyoca</groupId><artifactId>android-validation</artifactId><version>1.0</version><type>aar</type><scope>provided</scope></dependency>
已内置支持的校验方式
- 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() {@Overridepublic void dismiss(EditText field) {field.setError(null);}@Overridepublic void show(EditText field, String message) {field.setError(message);Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();}};// 绑定表单Viewfinal 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中") {@Overridepublic boolean test(String inputValue) {// 校验通过时返回 truereturn inputValue.equal("AABB");}});// 加入到某个View的输入对象中:formValidator.add(passwordInput, new AbstractValidator("出错时,此消息被返回并显示到EditText中") {@Overridepublic boolean test(String inputValue) {// 校验通过时返回 truereturn 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 - 交流方式
- Email: yoojia.chen@gmail.com
- QQ: 228441083
- QQ群:106904788