android–setCompoundDrawablesWithIntrinsicBounds无法正常工作

android–setCompoundDrawablesWithIntrinsicBounds无法正常工作,第1张

概述我有一个电子邮件字段作为EditText.我正在尝试在验证为true时在文本字段的末尾添加绿色勾号图标,并在错误时添加setError.这是我正在使用的代码片段:email.setOnFocusChangeListener(newView.OnFocusChangeListener(){@OverridepublicvoidonFocusChange(Vi

我有一个电子邮件字段作为EditText.我正在尝试在验证为true时在文本字段的末尾添加绿色勾号图标,并在错误时添加setError.

这是我正在使用的代码片段:

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:电子邮件是有效的!!!,似乎没有设置图标,因为我看不到它.
但是当我将if-condition更改为false时,这意味着永远不会调用setError,我可以看到日志和图标.

为什么我看到这种奇怪的行为的任何解释?我错过了什么?

解决方法:

如果您要设置任何图标,请尝试从xml中删除该图标
并从代码中设置两个图像
由于某种原因,如果您从xml设置图像,则图像不会刷新

并使用

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {          numTxt.setCompoundDrawablesrelativeWithIntrinsicBounds(R.drawable.icon, 0, 0, 0);    } else {              numTxt.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon, 0, 0, 0);    }
总结

以上是内存溢出为你收集整理的android – setCompoundDrawablesWithIntrinsicBounds无法正常工作全部内容,希望文章能够帮你解决android – setCompoundDrawablesWithIntrinsicBounds无法正常工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存