Как установить сообщение об ошибке для Spinner в Android?

Я хотел бы иметь возможность вызвать такой код, похожий на то, как setError установлен в TextView:

 spinner.setError("Error message"); 

Однако setError работает только для EditText, а не для Spinner.

Я хочу уведомить пользователя, если поле счетчика не выбрано. Как я могу выполнить такое уведомление без использования Toast ?

Solutions Collecting From Web of "Как установить сообщение об ошибке для Spinner в Android?"

В этом потоке есть несколько решений. Создание setError () для Spinner :

EdmundYeung99 работает для меня, либо вы используете свой собственный адаптер, либо нет. Просто введите следующий код в свою функцию проверки:

 TextView errorText = (TextView)mySpinner.getSelectedView(); errorText.setError(""); errorText.setTextColor(Color.RED);//just to highlight that this is an error errorText.setText("my actual error text");//changes the selected item text to this 

Но убедитесь, что у вас есть хотя бы одно значение в адаптере Spinner, когда вы выполняете проверку. Если нет, как пустой адаптер, ожидающий заполнения, сделайте, чтобы ваш адаптер получил пустую строку:

 ArrayAdapter<String> adapter = new ArrayAdapter<>(context, android.R.layout.simple_spinner_item, new String[]{""}); mySpinner.setAdapter(adapter); 

Класс Spinner вернет текстовое представление, когда вы используете getSelectedView() . Таким образом, вы можете использовать setError() косвенно.

 ((TextView)spinner.getSelectedView()).setError(""); 

Результаты должны быть как …

SetError в spinner

Надеюсь, это будет полезно!

Вот решение, которое использует скрытый TextView для отображения всплывающего сообщения в дополнение к значку ошибки в счетчике. Когда в состоянии ошибки, Spinner выглядит так:

Счетчик в недействительном состоянии

Если не в состоянии ошибки, это выглядит так.

Счетчик в действительном состоянии

Полное описание документа описано здесь: https://stackoverflow.com/a/29956372/3063884