Android アプリケーション用に新しいカスタム スタイルを作成しようとしています。setError
に設定した後に表示される errorText にスタイルを与える必要がありますEditText
。
スタイルをカスタマイズするにはどうすればよいですか?
例: style.xmlでbackground
白とtextColor
青などを設定したい
Android アプリケーション用に新しいカスタム スタイルを作成しようとしています。setError
に設定した後に表示される errorText にスタイルを与える必要がありますEditText
。
スタイルをカスタマイズするにはどうすればよいですか?
例: style.xmlでbackground
白とtextColor
青などを設定したい
解決策は最後にあり、スクリーンショットは次のとおりです。
いくつかの説明
次の行を使用してテキストの色を設定できる場合があります
yourEditText.setError(Html.fromHtml("<font color='blue'>this is the error</font>"));
ただし、これは保証されない場合があります。
ソースコードによると、これは内部クラスであるPopup
タイプを示しています。これの内容はから膨らんだ単一ですErrorPopup
TextView
Popup
TextView
com.android.internal.R.layout.textview_hint
final TextView err = (TextView) inflater.inflate(com.android.internal.R.layout.textview_hint,
null);
この背景はPopup
、アンカーの上に配置する必要があるかどうかによって異なります。
if (above) {
mView.setBackgroundResource(com.android.internal.R.drawable.popup_inline_error_above);
} else {
mView.setBackgroundResource(com.android.internal.R.drawable.popup_inline_error);
}
ポップアップの作成に使用されるすべてのAndroidリソースは内部にあり、最終的にはハードコーディングされているため、独自のエラーポップアップを作成するのが最善の方法です。これは非常に簡単で、デフォルトのポップアップは単にエラーを表示するために使用されるため、通常のポップアップに干渉することはありませんEditText
。したがって、独自のポップアップを作成しても問題ありません。
解決
ここで作成しました:WidgyWidgets
エラーポップアップは内部スタイルを使用しているため、そのスタイルをそのようにカスタマイズすることはできないと思います。
mPopupInlineErrorBackgroundId = getResourceId(mPopupInlineErrorBackgroundId,
com.android.internal.R.styleable.Theme_errorMessageBackground);
mView.setBackgroundResource(mPopupInlineErrorBackgroundId);
Spanned
ただし、オーバーロードされたを使用して、カスタムエラーアイコンを設定できますsetError(CharSequence, Drawable)
。
Spanned
を使用してHTMLから簡単に作成できますfromHtml()
。
ただし、ポップアップの背景画像を設定することはできません:-(
受け入れられた回答を見ましたが、提案されたライブラリが好きではありません
これは Android フレームワークのバグだと思います。ここでバグを報告しました: https://code.google.com/p/android/issues/detail?id=158590
編集: Android デザイン ライブラリ TextInputLayout ウィジェットを使用して、EditText のエラー処理を改善できます。
ここでどのように見えるかを見てください: https ://www.youtube.com/watch?v=YnQHb0fNtF8
ここでの実装方法: http://code.tutsplus.com/tutorials/creating-a-login-screen-using-textinputlayout--cms-24168