Android setError与EditText的onClick一起
使用Android setError与EditText的onClick一起,android,android-edittext,Android,Android Edittext,使用setError()方法显示正常错误: 问题: 好的,我在同一个对话框中有另一个EditText,它有一个OnClickListener,用于显示DatePicker对话框。当IsetError()显示红色警报图标时,当我单击该图标时,事件仍由EditText上的OnClick处理,并弹出DatePicker,因此我无法查看错误消息 我想要的是:如果我单击图标,它必须显示错误消息,如果我在图标外单击,它应该显示日期选择器一个简单的解决方案是检查onclickListener内的错误是否为
setError()
方法显示正常错误:
问题:
好的,我在同一个对话框中有另一个EditText
,它有一个OnClickListener
,用于显示DatePicker
对话框。当IsetError()
显示红色警报图标时,当我单击该图标时,事件仍由EditText上的OnClick
处理,并弹出DatePicker
,因此我无法查看错误消息
我想要的是:如果我单击图标,它必须显示错误消息,如果我在图标外单击,它应该显示日期选择器
一个简单的解决方案是检查onclickListener内的错误是否为空。
即
您可以根据您的代码使用以下代码
完成所有字段和第二个日期编辑文本后,将错误设置为null。您可以询问任何查询
mEditText.setError(null);//removes error
mEditText.clearFocus(); //clear focus from edit text
天哪,我两天前就有这个问题了。我找不到方法使它既有焦点(以便显示消息,又创建日期选择器的弹出窗口。我最后做的是将EditText
包装到TextInputLayout
中,如下所示:
<android.support.design.widget.TextInputLayout
android:id="@+id/birthDateInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/input_birth_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/birth_date_hint"
android:inputType="date" />
</android.support.design.widget.TextInputLayout>
birthDateInputLayout.setErrorEnabled(true);
birthDateInputLayout.setError("This field cannot be empty.");
注意:看起来与在EditText
上设置错误的常规方法并不完全相同,但它确实看起来很不错,解决问题的方式也有点不同
下面是它的屏幕截图:
试试这个
onClick(View v){
if(editText.getError() != null ){
editText.requestFocus(); // to show error message
}else{
// open date picker dialog here or do you stuff here
}
希望它能帮助用户使用自定义布局并处理相同的问题。这如何解决他遇到的问题?他不只是想删除错误。请阅读问题。谢谢!这只在EditText
可聚焦时有效。不幸的是,我不希望用户手动键入日期。我想到的一个解决方案是使用TextView
而不是EditText
。您可以限制用户在您的案例中键入EditText,也可以仅显示错误消息。请求焦点后,使用此EditText.setInputType(InputType.type\u NULL)谢谢!如果没有其他的工作,我会考虑改变UI。现在,寻找一个尽可能不改变UI的解决方案。@ XC0D3R,我认为你应该继续这个解决方案,即使它意味着改变你的代码。这样,你将有一个干净的代码,它工作得很好,与你可能要按顺序编写的任何可能的黑客相比。让另一个解决方案发挥作用。从个人角度来看,我真的很讨厌这种模式显示错误,它看起来很糟糕,与材质设计不协调。我同意@IulianPopescu,我的邻居:)这确实在某种程度上与材质融合得更好。但是如果OP仍然想追求他的原创想法,那也没关系。我的解决方案可能仍然对某些人有帮助。@Xc0d3r只有在没有错误时,这才不会影响UI的外观。你可以试试看它是否适合你的需要。
onClick(View v){
if(editText.getError() != null ){
editText.requestFocus(); // to show error message
}else{
// open date picker dialog here or do you stuff here
}