我想做的是更改EditText的状态(实际上是背景),以反映其内容的有效性。例如,如果用户输入999,而999在上下文上是无效的,则EditText应该使用红色边框代替默认的橙色边框,同样,一旦文本有效,它就应该使用绿色边框。
我探索的方法:
通过诸如editor.setStyle(R.styles.SomeID)之类的程序以编程方式更改EditText的样式。似乎在android中是不可能的。 在R.attr中添加自定义状态(state_valid,state_invalid),将它们与红色/绿色9补丁相关联,然后使用其中一种状态调用drawable.setState()。这样做的意义是可以通过getState()读取状态,但是边框不会改变颜色。 在检测到(无效)有效性时直接设置后台资源。这行得通,可以产生正确的视觉效果,但似乎有点曲折,并且只允许一个状态(例如,我必须手动检查是否已按下,启用EditText)。 给定有限的UI房地产,我不愿介绍一个单独的UI元素,以可视方式将文本的有效性反馈给用户,因此我希望将其显示在EditText本身中。
所以..这甚至可行吗?这似乎是一个相当普遍的用例,那么有人能以一种简洁明了的方式实现我想要做的事情吗?
我建议更改文本颜色以指示有效性,而不是通过您描述的任何技术(仅#3似乎可行)更改聚焦环的颜色。
另一种可能性是尝试setCompoundDrawablesWithIntrinsicBounds()修改EditText内容左侧或右侧的图标以指示有效性。我记得几个月前曾与某人讨论过这种技术,却忘了他们是否有效。
而且,当然,另一个选择是不允许通过自定义输入过滤器或侦听器等进行无效输入。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。