28

有用于用户输入验证的 iOS US2FormValidator库(见下图)。我认为该库比默认情况下仅在某些内容未验证时弹出警报要好。

US2FormValidator 预览

我正在寻找如何在 Android 上做这些事情。是否有一些US2FormValidator的 Android 类似物?

4

3 回答 3

67

您在屏幕截图上显示的弹出效果可以使用 Android 的小部件内置setError(String)方法来实现EditText

此外,您可以使用我编写的Android Saripaar库来利用注释的强大功能。

首先添加库:

compile 'com.mobsandgeeks:android-saripaar:2.0.2'

该库使用起来非常简单。在您的活动中注释View您想要验证的引用,如下例所示。

@Order(1)
private EditText fieldEditText;

@Order(2)
@Checked(message = "You must agree to the terms.")
private CheckBox iAgreeCheckBox;

@Order(3)
@Length(min = 3, message = "Enter atleast 3 characters.")
@Pattern(regex = "[A-Za-z]+", message = "Should contain only alphabets")
private TextView regexTextView;

@Order(4)
@Password(min = 6, scheme = Password.Scheme.ALPHA_NUMERIC_MIXED_CASE_SYMBOLS)
private EditText passwordEditText;

@Order(5)
@ConfirmPassword
private EditText confirmPasswordEditText;

order属性指定必须验证字段的顺序。

在您的onCreate()方法中实例化一个新Validator对象。并validator.validate()在您的任何事件侦听器中调用。

您将收到回调onSuccess和.onFailureValidationListener

如果要显示如上图所示的弹出窗口,请执行以下操作,

public void onValidationFailed(View failedView, Rule<?> failedRule) {
    if (failedView instanceof Checkable) {
        Toast.makeText(this, failedRule.getFailureMessage(), Toast.LENGTH_SHORT).show();
    } else if (failedView instanceof TextView) {
        TextView view = (TextView) failedView;
        view.requestFocus();
        view.setError(failedRule.getFailureMessage());
    }
}

希望有帮助。

于 2012-10-22T13:48:50.290 回答
28

Android 具有非常易于使用的内置验证机制,这已经足够了。请参阅以下链接: http ://blog.donnfelker.com/2011/11/23/android-validation-with-edittext/

于 2012-08-17T13:21:12.023 回答
4

我刚刚遇到了 ValidationKomensky,您可能会发现它很有用

https://github.com/inmite/android-validation-komensky

在此处输入图像描述

于 2014-01-25T20:39:49.190 回答