android - Android 4.2 未显示错误指示器(用于表单验证)?

标签 android validation error-handling indicator

背景

在 Android 上,当您想要向用户显示在那里键入(或未键入)的内容有误时,您可以为任何 EditText View 设置错误指示(称为“表单验证”)。

甚至有一个很好的库(here),这里有很多帖子介绍如何使用它。

在我用 Android 4.2 在 nexus 4 上运行它之前,一切对我来说都很好。

问题

有时,它只是不会显示错误的图标。在这种情况下,只有当我给 editText(有问题的)焦点时,它才会显示气泡,但它是空的并且不显示错误图标。

此外,在所有情况下,气泡始终是空的。

为什么会发生,我该如何解决?

注意:我使用 actionBarSherlock 库,所以我需要使用他们的主题或基于他们的主题。


编辑:

下面是一些截图:

安卓 4.2.2:

enter image description here

安卓 2.3.5:

enter image description here


编辑:

我以为这已经自己解决了,我终于弄清楚了这个错误是什么时候发生的: 如果焦点在另一个没有错误的 editText 上,并且验证错误在另一个 editText 上,则在 editText 获得焦点之前不会显示指示器。

最佳答案

问题 1: 问题是应用程序的主题。 尝试将主题更改为一些较暗的主题,例如:

<style name="AppBaseTheme" parent="android:Theme.Black">

它应该可以解决您的问题。我早些时候发现了这个类似的问题,并通过更改主题来纠正这个问题。 但我没有研究太多,但我觉得这是 Android 问题,气泡应该尝试根据主题更改文本颜色。

让我知道它是否解决了您的问题。

问题2:您说的另一个问题是注意力不集中,您可以考虑以下链接:Text Truncating and Focus Issue .

----------------------------------------更新答案-- ------------------------------------------

Q1) What should I add to the theme configuration in order for it to always work, no matter what theme I use? 

根据我的发现,这里有一些结果:

[注意:仅适用于运行 3.0 及更高版本的设备]

如果您的构建目标是:

  • 小于11,则用

    parent="android:Theme.Light"    --> setError() message doesn't work or shows very faded text colour almost blending with color white
    parent="android:Theme"      --> setError() message works
    
  • 大于11,则用

    parent="android:Theme.Holo.Light" --> setError() message works
    parent="android:Theme.Holo"       --> setError() message works
    

因为您的项目支持低于 11 API 级别的设备,并且您也希望支持 4.0 及更高版本,所以最好的选择是集成 HoloEverywhere。在你的项目中,这将解决你的问题,你也可以使用你的 ActionBarSherlock,为了兼容性,检查这个 SO Post .

Q2) What are the available configurations for the error indication UI ?

大多数情况下你可以自定义绘图和图标,但我怀疑你是否能够配置你的文本和背景(如果有人知道更多可以指出这一点)

我建议您查看此 SO Post立即得到答案。

为了放置正确的焦点,对于每个验证检查,您可以放置​​此代码:

EditText.setFocusableInTouchMode(true);
EditText.requestFocus();
EditText.setError("My Error Text");

如有任何问题,请告诉我。

关于android - Android 4.2 未显示错误指示器(用于表单验证)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16933427/

相关文章:

javascript - AngularJS:多种形式的服务器端验证

php - PHP Error_get_last函数的错误常量

android - 创建一个通用的进度对话框以用于各种 Activity

asp.net - 在将文件上传到服务器之前跨浏览器检查客户端的文件大小?

android - 从 URL 获取标题、描述和图像

java - Spring Web Mvc REST 验证

jquery - jQuery表单提交后如何保持粘性

error-handling - MIDI 流的轻量级冗余纠错和防丢失

java - Android库插件的Gradle发布错误

android - 将 Disqus 集成到 Android 应用程序