22

我剛遇到一個我不知道如何解決的問題。它看起來很傻,但我找不到解決它的方法。如果我應用背景,如何返回EditText上的默認樣式?

我在android中有一個窗體,有幾個EditText,當你提交表單時,它會檢查那些EditText,如果他們有錯誤的數據,我把EditText改成紅色邊框(應用ninepatch圖像)。

myEditText.setBackgroundResource(R.drawable.edittext_red); 

問題是,我想在用戶更改EditText時恢復android的默認樣式,但我不知道該怎麼做。如果我這樣做:

myEditText.setBackgroundResource(0); 

它只會刪除一切,這不是我想要的。

謝謝!

回答

46

首先,你叫setBackgroundResource用自己的ninepatch之前,存儲的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/platforms/android- < API等級>/data/res/

+0

嗨SeRPRo-你應該將videre的答案標記爲正確的,它會給你兩個觀點並告知未來的用戶這就是解決方案。 –

+0

對不起,我之前沒有標註它,因爲它說我必須等待。 – SERPRO

+5

您的替代解決方案是我尋找的答案。這是恢復EditText原始外觀的最簡單和最簡單的方法(甚至可以恢復大小!)。但是,而不是使用editbox_background_normal我剛剛使用android.R.drawable.edit_text – faul

相關問題