【发布时间】:2011-12-06 12:44:35
【问题描述】:
当我在 android 中使用 edittext.setError("enter a comment") 时,它可以正常工作,直到出现键盘建议并且错误被推送到 edittext 上方,之后它不会显示整个错误消息。
为什么要这样做?
【问题讨论】:
-
在我添加任何其他内容之前,我没有尝试过,还有其他原因吗?
标签: android set android-edittext
当我在 android 中使用 edittext.setError("enter a comment") 时,它可以正常工作,直到出现键盘建议并且错误被推送到 edittext 上方,之后它不会显示整个错误消息。
为什么要这样做?
【问题讨论】:
标签: android set android-edittext
设置错误
将 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")的班级代码
@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");
注意:写的是,以防万一您被困在这一点上,尽管可能有其他解决方案可用,并且很抱歉进行了如此多的编辑,因为这是我最后得出的最佳解决方案。
【讨论】:
EditText.clearFocus(); 之后,一切都像魅力一样!
我花了很多时间尝试各种方法来解决这个问题......
简单的解决方法: - 确保你的错误文本真的很短
使一切正常的修复:
当 Android 显示软键盘时,带有您的编辑文本的视图会“上移”……错误文本也会随之移动。截断通常是其中的一部分。您可以通过将整个布局放在 ScrollView 括号中轻松解决此问题...这样,Android 可以通过滚动整个布局来向上移动 EditText - 然后将完全显示错误消息.试试看 - 它确实有效。
P.S:我喜欢你发布了你的问题的截图。让事情变得更容易。
【讨论】:
ScrollView。现在的问题是,当现在显示错误消息并且我向上滚动视图时,即使EditText 现在已经在视图中,错误消息也会随着EditText 而上升。我该如何解决这个问题?
另一种解决方案:
添加android:windowSoftInputMode="adjustResize"
AndroidManifest.xml中的活动标签为我纠正了这个问题
【讨论】:
将EditText 的inputType="" 值设置为适当的值android:inputType="textEmailAddress",当输入第一个字符时弹出窗口将消失。
【讨论】: