如何显示类似于TextView.setError()的微调器窗口小部件的验证错误 我不想为每个微调器验证错误打开一个新对话框, android.widget.Spinner类没有setError方法
答案 0 :(得分:19)
如果您的微调器设置了默认项目视图,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上显示如下:
答案 1 :(得分:0)
因此,您可以在spinner的适配器中的getView中使用'setError'。当然,如果你的微调器的项目的xml有一个TextView:
if(requeriedField && item.getValue() == 0){
img_tittle_spinner.setError(activity.getResources().getString(R.string.FieldRequired));
}
答案 2 :(得分:0)
一种更简洁的方式来做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
。