【发布时间】:2016-06-23 12:57:34
【问题描述】:
如何显示类似于 TextView.setError() 的微调器小部件的验证错误 我不想为每个微调器验证错误打开一个新对话框, android.widget.Spinner 类没有 setError 方法
【问题讨论】:
标签: android validation spinner
如何显示类似于 TextView.setError() 的微调器小部件的验证错误 我不想为每个微调器验证错误打开一个新对话框, android.widget.Spinner 类没有 setError 方法
【问题讨论】:
标签: android validation spinner
如果您的微调器设置了默认项目视图,则 Spinner 类上的 getSelectedView() 方法将返回 TextView。对此,您可以致电setError(CharSequence) 这是我所做的:
View selectedView = spinner.getSelectedView();
if (selectedView != null && selectedView instanceof TextView) {
TextView selectedTextView = (TextView) selectedView;
if (!valid) {
String errorString = selectedTextView.getResources().getString(mErrorStringResource);
selectedTextView.setError(errorString);
}
else {
selectedTextView.setError(null);
}
}
Android 4.4 上的结果如下所示:
【讨论】:
编写 Diederik 代码的一种更简洁的方式:
static public void setSpinnerError(Spinner spinner, String error){
View selectedView = spinner.getSelectedView();
if (selectedView != null && selectedView instanceof TextView) {
TextView selectedTextView = (TextView) selectedView;
selectedTextView.setError(error);
}
}
如果你想关闭它,只需将 error 设置为 null。
【讨论】:
因此,您可以在微调器适配器的 getView 中使用“setError”。当然,如果你的项目的微调器的 xml 有一个 TextView:
if(requeriedField && item.getValue() == 0){
img_tittle_spinner.setError(activity.getResources().getString(R.string.FieldRequired));
}
【讨论】: