Ответ 1
Эта проблема обсуждается и решается здесь:
EditText setError() со значком, но без всплывающего сообщения
Я надеюсь, что, расширив ответ, он не будет автоматически преобразован в комментарий.
Я хочу установить метод setError
на мой TextView
, с пользовательским значком вместо значка Android по умолчанию. Поэтому я попробовал это:
((EditText)findViewById(R.id.edtTitle)).setError(getResources().getText(R.string.errEmptyTitle),
getResources().getDrawable(R.drawable.ico_warning_small);
Он показывает мне пользовательское сообщение, но не пользовательский значок. Я тоже это пробовал:
Drawable warning = (Drawable)getResources().getDrawable(R.drawable.ico_warning_small);
((EditText)findViewById(R.id.edtTitle))
.setError(getResources().getText(R.string.errEmptyTitle), warning);
Совсем то же самое, но я все же решил дать ему поход. Однако это тоже не помогло - я до сих пор не вижу иконку. Я попытался использовать какой-то другой значок системы Android, просто чтобы увидеть, вижу ли я их, и нет, я тоже их не вижу.
Так что я делаю неправильно? Есть ли способ установить этот пользовательский значок?
Эта проблема обсуждается и решается здесь:
EditText setError() со значком, но без всплывающего сообщения
Я надеюсь, что, расширив ответ, он не будет автоматически преобразован в комментарий.
Вам нужно установить границы на drawable перед использованием в setError.
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
editText.setError("error", drawable);
Если вы вообще не хотите показывать какой-либо значок, используйте
editText.setError("error", null);
Drawable customErrorDrawable = getResources().getDrawable(R.drawable.error_icon);
customErrorDrawable.setBounds(0, 0, customErrorDrawable.getIntrinsicWidth(), customErrorDrawable.getIntrinsicHeight());
editText.setError("please enter data",customErrorDrawable);