web-dev-qa-db-ja.com

背景を適用した場合、EditTextでデフォルトのスタイルに戻すにはどうすればよいですか?

解決方法がわからない問題が発生しました。ばかげているように見えますが、修正する方法が見つかりません。

AndroidにいくつかのEditTextを含むフォームがあり、フォームを送信すると、それらのEditTextがチェックされ、データが間違っている場合は、EditTextを赤い境界線に変更します(9パッチ画像を適用)。

myEditText.setBackgroundResource(R.drawable.edittext_red);

問題は、ユーザーがEditTextを変更したときに、Androidのデフォルトのスタイルを復元したいのですが、その方法がわかりません。私が行った場合:

myEditText.setBackgroundResource(0);

それはすべてを削除するだけで、それは私が望んでいることではありません。

ありがとう!

31
SERPRO

まず、独自のninepatchを使用して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 /

53
Marmoy