我想要做的是更改EditText的状态(实际上,背景)以反映其内容的有效性。例如。如果用户输入999,其中999在上下文中无效,则EditText应该有一个红色边框代替默认的橙色边框,同样一旦文本有效,它应该有一个绿色边框。
我探索过的方法:
鉴于有限的UI空间,我不愿意引入一个单独的UI元素来直观地反馈文本对用户的有效性,因此我希望在EditText本身中显示它。
那么..这是甚至可行的吗?这似乎是一个相当常见的用例,所以有人以直截了当的方式实现了我想要做的事情吗?
答案 0 :(得分:2)
我建议更改文字颜色以表示有效性,而不是通过您描述的任何技术改变聚焦环的颜色(其中只有#3看起来很实用)。
另一种可能性是尝试setCompoundDrawablesWithIntrinsicBounds()
修改EditText
内容左侧或右侧的图标以指示有效性。我记得几个月前和某人讨论过这种技术并忘记它们是否能够正常工作。
当然,另一个选择是不允许通过自定义输入过滤器或监听器等无效输入。
答案 1 :(得分:1)
好吧,我只是扩展EditText类并在顶层构建所需的功能(使用你建议的第三种方法,因为它起作用:-))。这样做,你必须只走一次,并且一旦你知道最好的方式就可以改变你的实现(我会用第三种方法亲自解决它,对我来说似乎很好)。
答案 2 :(得分:0)
我认为对invalidateDrawable(yourDrawable)的调用可以使用方法2。 我没有尝试..但它有意义