web-dev-qa-db-ja.com

AndroidでEditTextのフォーカスカラーを変更する方法

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"
62
kcoppock

XML Drawableを作成する必要はありません。コードの方が簡単かもしれません。 kotlinの例:

editText.onFocusChangeListener = OnFocusChangeListener { _, hasFocus ->
    // colorLine, colorLineFocus is vars of ColorStateList
    ViewCompat.setBackgroundTintList(editText, if (hasFocus) colorLineFocus else colorLine)
}
0
comm1x
<?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>
0
Ketan Ahir