【问题标题】:Keyboard suggestions cause part of Android EditText.setError() message to not display键盘建议导致部分 Android EditText.setError() 消息不显示
【发布时间】:2011-12-06 12:44:35
【问题描述】:

当我在 android 中使用 edittext.setError("enter a comment") 时,它可以正常工作,直到出现键盘建议并且错误被推送到 edittext 上方,之后它不会显示整个错误消息。

为什么要这样做?

【问题讨论】:

  • 在我添加任何其他内容之前,我没有尝试过,还有其他原因吗?

标签: android set android-edittext


【解决方案1】:

设置错误
将 TextView 的右侧复合可绘制对象设置为“错误”图标并设置将显示的错误消息 在 TextView 具有焦点时的弹出窗口中。图标和错误消息 当任何关键事件导致更改 TextView 的文本。如果错误为空,错误信息和图标将 被清除。

因此,当文本更改时,它应该消失了。我不知道为什么在你的情况下不会发生这种情况。

当错误信息为空时,它也应该被清除,所以一个技巧可能是:

edittext = (EditText)findViewById(R.id.foo); // add below this line
edittext.addTextChangedListener(new TextWatcher() {
    public void afterTextChanged(Editable s) {}
    public void beforeTextChanged(CharSequence s, int start, int count, int after){}
    public void onTextChanged(CharSequence s, int start, int before, int count){
        if(s != null && s.length() > 0 && edittext.getErrorMessage() != null) {
            edittext.setErrorMessage(null);
        }
    }
}); 

【讨论】:

  • 贴出你调用edittext.setError("enter a comment")的班级代码
  • 它不会让我等待 8 个小时,而且这里的字符太多,但基本上当点击图片中的“更新”按钮时,它会检查编辑文本是否为空,然后显示一个错误。谢谢 xP
  • 它有效! xP 我不知道怎么做,但它确实哈哈,谢谢你的帮助 x3
  • 存在某些字符类型无法重置错误的错误。在我有限的测试中,我发现字母字符不会重置它,而数字和空格会重置它。这是一个很好的解决方法。这是报告的问题:code.google.com/p/android/issues/detail?id=14310
【解决方案2】:

@Andy Lobel: 我也遇到了这个问题,必须通过在文本末尾添加空格(10-12)来解决它,所以截断只发生在空格上:) 另外,我的 setError 通过设置 setError 文本和 EditText 看起来更好对齐。

其他情况:我遇到了另一个问题,其中显示了可绘制图标,但没有出现浮动消息及其矩形框。

我的布局包含:

1) 用户名​​编辑文本

2) 密码编辑文本

3) 确认密码编辑文本

4) 注册按钮

所以,我在点击注册按钮时验证并显示错误 但发现消息没有出现,只有drawable曾经来过 并发现该消息仅在编辑文本可聚焦时才会出现:

根据 setError API 说明:- 将 TextView 的右侧复合可绘制对象设置为“错误”图标,并设置将在弹出窗口中显示的错误消息'当 TextView 获得焦点时'。

所以,消息是针对用户名编辑文本的,但最后的焦点仍然是确认密码编辑文本,所以,它从未出现过

这种情况的解决方案/调整是:

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

注意:写的是,以防万一您被困在这一点上,尽管可能有其他解决方案可用,并且很抱歉进行了如此多的编辑,因为这是我最后得出的最佳解决方案。

【讨论】:

  • 我知道这已经很老了,但是对于您答案的最后一部分,这 3 行对我不起作用。在我在这 3 行之前添加 EditText.clearFocus(); 之后,一切都像魅力一样!
  • 谢谢,感谢您的意见。可能是您的布局在加载时获得了对其他视图而不是 EditText 的关注。添加这将有助于获得对相应 EditText 视图的关注。
【解决方案3】:

我花了很多时间尝试各种方法来解决这个问题......

简单的解决方法: - 确保你的错误文本真的很短

使一切正常的修复:

当 Android 显示软键盘时,带有您的编辑文本的视图会“上移”……错误文本也会随之移动。截断通常是其中的一部分。您可以通过将整个布局放在 ScrollView 括号中轻松解决此问题...这样,Android 可以通过滚动整个布局来向上移动 EditText - 然后将完全显示错误消息.试试看 - 它确实有效。

P.S:我喜欢你发布了你的问题的截图。让事情变得更容易。

【讨论】:

  • 哈哈谢谢,我很久没接触过java了,但我相信它会对其他人有所帮助,1up你需要一些代表;-)
  • @Stephan W 这就是我所做的,因为我的字段的父布局是ScrollView。现在的问题是,当现在显示错误消息并且我向上滚动视图时,即使EditText 现在已经在视图中,错误消息也会随着EditText 而上升。我该如何解决这个问题?
【解决方案4】:

另一种解决方案:
添加android:windowSoftInputMode="adjustResize" AndroidManifest.xml中的活动标签为我纠正了这个问题

【讨论】:

    【解决方案5】:

    EditTextinputType="" 值设置为适当的值android:inputType="textEmailAddress",当输入第一个字符时弹出窗口将消失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      • 2019-12-17
      • 2020-07-19
      • 2013-08-23
      相关资源
      最近更新 更多