34

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

私は Android に複数の EditText を含むフォームを持っています。フォームを送信すると、それらの EditText がチェックされ、間違ったデータがある場合は、EditText を赤い境界線に変更します (ninepatch イメージを適用します)。

myEditText.setBackgroundResource(R.drawable.edittext_red);

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

myEditText.setBackgroundResource(0);

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

ありがとう!

4

2 に答える 2

63

まず、独自の 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/platforms/android-<API レベル>/data/res/

于 2011-08-02T12:46:45.127 に答える