繁体   English   中英

Android:EditText中的验证符号

[英]Android: Validation symbol in EditText

如果EditText的验证返回false,我们有setError方法用于在框的末尾设置带有红色感叹号的错误消息:

验证返回false

我想设置一个绿色刻度符号 ,就像我的验证返回true时盒子末尾的红色感叹号一样:

password.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {

                if (password.getText().toString().length() < 6) {
                    password.setError("Password should be greater than 6 characters!");
                }
                else {
                    //validation is true, so what to put here?
                }
            }
        }
    });
}

编辑1看似不可能,但问题还有更多。 我这样做了:

email.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
                String mail = email.getText().toString();
                if(!android.util.Patterns.EMAIL_ADDRESS.matcher(mail).matches()) {
                    email.setError("Please enter a valid email address");
                } 
                else {
                    Log.i("yay!","Email is valid!!!");
                    email.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.validated, 0);
                }
            }
        }
    });

虽然我可以在我的日志中看到yay: Email is valid!!! ,我无法在EditText的末尾看到验证符号。

但是,令我惊讶的是,当我将if语句更改为始终为false ,我可以看到带有log语句的符号。

有关为什么会发生这种情况的任何解释?

验证为true时,您可以显示drawableRight

password.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.rightImage, 0);

验证为false时将其设置恢复正​​常。

password.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);

我刚刚使用setError(CharSequence error, Drawable icon)在我自己的项目中测试了它

  1. 获取一个新图标:
    转到我的drawable文件夹
    添加新的矢量资产。

    我选择了“素材图标”并浏览,
    然后选择了ic_done_24pp。

  2. 颜色:
    接下来,我进入xml并通过更改fillcolor使其变为绿色:
    android:fillColor="#FF00FF00"

3:更改代码:

Drawable myIcon = getResources().getDrawable(R.drawable.ic_done_24dp); 
myIcon.setBounds(0, 0, myIcon.getIntrinsicWidth(), myIcon.getIntrinsicHeight());
mPasswordView.setError("Good", myIcon); 

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM