22

私はちょうど解決する方法がわからないという問題が発生しました。それは愚かに見えますが、私はそれを修正する方法を見つけることができません。バックグラウンドを適用するとEditTextのデフォルトスタイルに戻る方法は?

私はいくつかのEditTextを持つフォームを持っています。フォームを送信すると、それらのEditTextがチェックされ、間違ったデータがあればEditTextが赤い枠線に変わります(nineパッチイメージを適用します)。

myEditText.setBackgroundResource(R.drawable.edittext_red); 

問題は、私は、ユーザーがのEditTextを変更するAndroidのデフォルトスタイルを復元したい、ですが、私はどのように行うのか分かりません。私がしている場合:

それだけですべてを削除し、それは私が望むものではありません。

ありがとうございます!

答えて

46

まず、あなたがあなた自身のninepatchでsetBackgroundResourceを呼び出す前に、のEditTextの元の背景を保存し、このような:

Drawable originalDrawable = myEditText.getBackground(); 

ユーザーが誤ったデータを入力した場合次に、あなたは赤いボーダーninepatchを設定することができます:

myEditText.setBackgroundResource(R.drawable.edittext_red); 

そして、あなたはのEditTextの外観を復元する際に、後で、保存された描画可能なを使用します。

myEditText.setBackgroundDrawable(originalDrawable); 
あなたは別のドロウアブルは、Androidの異なるバージョンのためにどのように見えるかを参照し、そのリソース識別子を取得することができます androiddrawables

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

:210

またあなたが直接このように、デフォルトのAndroidのEditTextの背景を参照することができます。この方法は、すべてのドローアブルのために働く必要がないだけのEditText

これらの(および他のアンドロイドのリソース)のAndroid-SDKフォルダに

<パスにアンドロイド-SDKフォルダに、独自のシステムでも見つけることができます>/android-sdk/platforms/android- < APIレベル>/data/res/

+0

Heide SeRPR-あなたはVidereの回答を正しいとマークする必要があります。 –

+0

申し訳ありませんが、それは私が待たなければならないと言いましたので、前にマークしていませんでした。 – SERPRO

+5

あなたの代替ソリューションは、私が探していた答えでした。それはあなたのEditTextのオリジナルの外観を復元する最も簡単で簡単な方法でした(さらにサイズを復元します)。しかし、editbox_background_normalを使用する代わりに、私はandroid.R.drawable.edit_textを使用しました。 – faul

関連する問題