我有一个电子邮件字段作为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无法正常工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)