22

Właśnie napotkałem problem, którego nie wiem, jak rozwiązać. Wygląda to głupio, ale nie mogę znaleźć sposobu, aby to naprawić.Jak powrócić do stylu domyślnego w EditText, jeśli zastosuję tło?

Mam formularz w Androidzie z kilkoma EditTextem, a kiedy przesyłasz formularz, sprawdza on te EditText i jeśli mają błędne dane, zmieniam EditText na czerwoną granicę (stosując obraz ninepatch).

myEditText.setBackgroundResource(R.drawable.edittext_red); 

Problem polega na tym, chcę przywrócić domyślny styl Androida, gdy zmiany użytkownikowi EditText, ale nie wiem jak to zrobić. jeśli to zrobię:

myEditText.setBackgroundResource(0); 

Po prostu usunie wszystko i nie tego chcę.

Dzięki!

Odpowiedz

46

Po pierwsze, zanim zadzwonisz setBackgroundResource z własnym ninepatch przechowywać oryginalne tło z EditText, tak:

Drawable originalDrawable = myEditText.getBackground(); 

Następnie, jeśli użytkownik wprowadził błędne dane, można ustawić czerwonym obramowaniem ninepatch :

myEditText.setBackgroundResource(R.drawable.edittext_red); 

A później, gdy chcesz przywrócić wygląd EditText, użyj przechowywane odkształcalne:

myEditText.setBackgroundDrawable(originalDrawable); 

Alternatywnie można odwoływać domyślny Android EditText tła bezpośrednio tak:

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

Na androiddrawables widać jak różne kanału alfa szukać różnych wersjach Androida, i uzyskać ich identyfikator zasobu. Ta metoda powinna działać dla wszystkich kanału alfa, a nie tylko EditText

tych (i innych android zasobów) można znaleźć również na własnym systemie, w folderze android-sdk w

< ścieżkę do folderu android-sdk>/android-sdk/platforms/android- < Poziom API>/data/res/

+0

Hej SeRPR - powinieneś oznaczyć odpowiedź videre jako poprawną, da ci to zarówno punkty, jak i poinformuje przyszłych użytkowników, że to było rozwiązanie. –

+0

Przepraszam, nie zaznaczyłem tego wcześniej, ponieważ powiedziałem, że muszę czekać .. – SERPRO

+5

Twoje alternatywne rozwiązanie było odpowiedzią, której szukałem. To był najprostszy i najłatwiejszy sposób przywrócenia oryginalnego wyglądu Twojego EditText (nawet przywraca rozmiar!). Ale zamiast używać editbox_background_normal po prostu użyłem android.R.drawable.edit_text – faul

Powiązane problemy