Ответ 1
Всплывающий эффект, который вы показали на скриншоте, может быть достигнут с помощью встроенного метода setError(String)
для Android на 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
и onFailure
методах ValidationListener
.
Если вы хотите отобразить всплывающее окно как показано на изображении выше, сделайте следующее,
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());
}
}
Надеюсь, что это поможет.