data-binding-validator
介绍:
一个基于Data Binding的表单验证。
运行效果:
使用说明:
Step 1: 在项目的根build.gradle文件中添加:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2: 添加依赖
dependencies {
compile 'com.github.Ilhasoft:data-binding-validator:LATEST-VERSION'
}
启用 Data Binding
要使用Data Binding你需要先启用它,在 main module 的 build.gradle 文件中添加以下代码:
android {
....
dataBinding {
enabled = true
}
}
直接在布局中设置验证
可以直接在布局上插入验证。不同语言的错误信息都已经在library中配置好了,无需由开发者添加。以下是现有的验证类型:
验证字符长度
为EditText添加 validateMinLength 或者 validateMaxLength,可以配置最小和最大的字符长度:
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
app:validateMinLength="@{4}"
app:validateMaxLength="@{10}"/>
验证是否为空
使用validateEmpty验证EditText是否为空:
<EditText
android:id="@+id/hello"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
app:validateEmpty="@{true}" />
验证日期格式
使用validateDate验证日期格式,你可以设置类似dd/MM/yyyy, yyyy这样的格式来对日期进行验证:
<EditText
android:id="@+id/date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
app:validateDate='@{"dd/MM/yyyy"}' />
正则验证
使用validateRegex进行正则验证:
<EditText
android:id="@+id/regex"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
app:validateRegex='@{"\[a-zA-Z0-9-._\]+"}'
app:validateRegexMessage="@{@string/regexErrorMessage}" />
验证输入类型
你甚至可以使用validateType直接验证Email, URL, Username, CreditCard, CPF, CEP等:
<EditText app:validateType='@{"email"}' />
<EditText app:validateType='@{"url"}' />
<EditText app:validateType='@{"creditCard"}' />
<EditText app:validateType='@{"username"}' />
<EditText app:validateType='@{"cpf"}' />
应用验证
需要传入你的ViewDataBinding实例来实例化Validator,然后调用validate()判断是否通过验证:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
final Validator validator = new Validator(binding);
binding.validate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (validator.validate()) {
saveToDatabase();
}
}
});
}
自定义错误提示
你可以添加自定义的错误提示,方法是在validation名字的后面再加上Message,比如s validateTypeMessage, validateDateMessage, validateRegexMessage:
<EditText
android:id="@+id/date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
app:validateDate='@{"dd/MM/yyyy"}'
app:validateDateMessage="@{@string/dateErrorMessage}" />
验证模式
验证可以采用两种方式,一个一个的验证或者是整个表单一起验证。默认是一个一个的,但是你可以调用validator.enableFormValidationMode();来进行整表验证:
如果想回到默认的方式,调用validator.enableFieldValidationMode();
Auto dismiss
默认当你再次输入的时候错误提示会消失,但是这也是可以配置的,再验证规则的后面+AutoDismiss来设置,比如:
<EditText
android:id="@+id/date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
app:validateDate='@{"dd/MM/yyyy"}'
app:validateDateMessage="@{@string/dateErrorMessage}"
app:validateDateAutoDismiss="@{false}" />