开发者社区> 问答> 正文

Android:可以查看/绘制自定义样式吗?

我想做的是更改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本身中。

所以..这甚至可行吗?这似乎是一个相当普遍的用例,那么有人能以一种简洁明了的方式实现我想要做的事情吗?

展开
收起
Puppet 2020-01-24 12:06:16 520 0
1 条回答
写回答
取消 提交回答
  • 我建议更改文本颜色以指示有效性,而不是通过您描述的任何技术(仅#3似乎可行)更改聚焦环的颜色。

    另一种可能性是尝试setCompoundDrawablesWithIntrinsicBounds()修改EditText内容左侧或右侧的图标以指示有效性。我记得几个月前曾与某人讨论过这种技术,却忘了他们是否有效。

    而且,当然,另一个选择是不允许通过自定义输入过滤器或侦听器等进行无效输入。

    2020-01-24 12:06:28
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载