EditTextボックスのフォーカスカラー(オレンジ)を変更するにはどうすればよいですか?フォーカスの色は、コントロール全体を囲む小さな縁で、コントロールにフォーカスがあるときは明るいオレンジ色です。そのフォーカスの色を別の色に変更するにはどうすればよいですか?誰でもこの問題を解決するのに役立ちますか?前もって感謝します、
独自のNinePatchイメージを作成/変更してデフォルトのイメージを置き換え、それをEditTextの背景として使用する必要があります。 SDKフォルダー、プラットフォーム、res/drawableを見ると、EditTextフォーカス状態のNinePatchイメージが見つかります。それだけを変更したい場合は、Photoshop、または使用している画像編集ソフトウェアにドラッグして、オレンジ色を好みの色に変更するだけです。次に、それをドロウアブルフォルダーに保存し、新しいStateListDrawableをビルドします。たとえば、次のようなものです。
edittext_modified_states.xml
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:Android="http://schemas.Android.com/apk/res/Android"
>
<item
Android:state_pressed="true"
Android:drawable="@Android:drawable/edittext_pressed"
/> <!-- pressed -->
<item
Android:state_focused="true"
Android:drawable="@drawable/edittext_focused_blue"
/> <!-- focused -->
<item
Android:drawable="@Android:drawable/edittext_normal"
/> <!-- default -->
</selector>
EditTextのデフォルトのNinePatchesの実際の名前を知らないので、必要に応じて置き換えますが、ここで重要なのは、変更していない(または変更できる)イメージに@Android:drawable
イメージを使用することですそれらをプロジェクトのドロウアブルフォルダーにコピーします)、変更されたドロウアブルをフォーカス状態に使用します。
次に、次のように、このStateListDrawableをTextViewの背景として設定できます。
<TextView
Android:background="@drawable/edittext_modified_states"
XML Drawableを作成する必要はありません。コードの方が簡単かもしれません。 kotlinの例:
editText.onFocusChangeListener = OnFocusChangeListener { _, hasFocus ->
// colorLine, colorLineFocus is vars of ColorStateList
ViewCompat.setBackgroundTintList(editText, if (hasFocus) colorLineFocus else colorLine)
}
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:Android="http://schemas.Android.com/apk/res/Android"
>
<item
Android:state_pressed="true"
Android:color="colorcode"
/> <!-- pressed -->
<item
Android:state_focused="true"
Android:color="colorcode"
/> <!-- focused -->
<item
Android:color="colorcode"
/> <!-- default -->
</selector>