解決方法がわからない問題が発生しました。ばかげているように見えますが、修正する方法が見つかりません。
AndroidにいくつかのEditTextを含むフォームがあり、フォームを送信すると、それらのEditTextがチェックされ、データが間違っている場合は、EditTextを赤い境界線に変更します(9パッチ画像を適用)。
myEditText.setBackgroundResource(R.drawable.edittext_red);
問題は、ユーザーがEditTextを変更したときに、Androidのデフォルトのスタイルを復元したいのですが、その方法がわかりません。私が行った場合:
myEditText.setBackgroundResource(0);
それはすべてを削除するだけで、それは私が望んでいることではありません。
ありがとう!
まず、独自の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 /