Как вернуться к стилю по умолчанию на EditText, если я применяю фон? - PullRequest
28 голосов
/ 02 августа 2011

Я только что столкнулся с проблемой, которую не знаю, как решить. Это выглядит глупо, но я не могу найти способ это исправить.

У меня есть форма в Android с несколькими EditText, и когда вы отправляете форму, она проверяет эти EditText, и если они имеют неправильные данные, я меняю EditText на красную рамку (применяя изображение из девяти пятен).

myEditText.setBackgroundResource(R.drawable.edittext_red);

Проблема в том, что я хочу восстановить стиль Android по умолчанию, когда пользователь меняет EditText, но я не знаю, как это сделать. если я сделаю:

myEditText.setBackgroundResource(0);

Это просто удалит все, и это не то, что я хочу.

Спасибо!

1 Ответ

53 голосов
/ 02 августа 2011

Во-первых, прежде чем вызывать setBackgroundResource со своим собственным патчем, сохраните исходный фон EditText, например:

Drawable originalDrawable = myEditText.getBackground();

Затем, если пользователь ввел неправильные данные, вы можете установить красную рамку ninepatch:

myEditText.setBackgroundResource(R.drawable.edittext_red);

И позже, когда вы хотите восстановить внешний вид EditText, используйте сохраненный чертеж:

myEditText.setBackgroundDrawable(originalDrawable);

В качестве альтернативы вы можете ссылаться на заданный по умолчанию фон Android EditText следующим образом:

myEditText.setBackgroundResource(android.R.drawable.edit_text);

На androiddrawables вы можете увидеть, как различные рисованные элементы выглядят для разных версий Android, и получить их идентификатор ресурса. Этот метод должен работать для всех элементов рисования, а не только для EditText

Эти (и другие ресурсы Android) также можно найти в вашей собственной системе, в папке android-sdk в

<путь к папке android-sdk> / android-sdk / platform / android- <уровень API> / data / res /

...