wake-up-neo.com

so ändern Sie die Fokusfarbe von EditText in Android

Wie kann ich die Fokusfarbe (orange) in einem EditText-Feld ändern? Die Fokusfarbe ist ein kleiner Rand um das gesamte Steuerelement und ist hell. Wie kann ich die Farbe dieses Fokus auf eine andere Farbe ändern?

Sie müssen ein eigenes NinePatch-Bild erstellen/ändern, um das Standardbild zu ersetzen, und dieses als Hintergrund für Ihren EditText verwenden. Wenn Sie in Ihrem SDK-Ordner unter Ihrer Plattform suchen und res/drawable anzeigen, sollten Sie das NinePatch-Bild für den EditText-Fokusstatus finden. Wenn Sie alles ändern möchten, können Sie es einfach in Photoshop oder eine andere Bildbearbeitungssoftware einfügen und die orange Farbe in eine Farbe Ihrer Wahl ändern. Dann speichern Sie das in Ihrem Zeichnungsordner und erstellen eine neue StateListDrawable, zum Beispiel in etwa die folgende:

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>

Ich kenne die tatsächlichen Namen für die Standard-NinePatches für den EditText nicht ohne weiteres, also ersetzen Sie sie bei Bedarf. Der Schlüssel hier ist jedoch, dass Sie einfach die @Android:drawable-Bilder für diejenigen verwenden, an denen Sie keine Änderungen vorgenommen haben Zeichnen Sie den Ordner Ihres Projekts), und verwenden Sie dann Ihren geänderten Zeichnungsstatus für Ihren Fokusstatus.

Sie können diese StateListDrawable dann als Hintergrund für Ihre TextView festlegen.

<TextView
    Android:background="@drawable/edittext_modified_states"
62
kcoppock

Sie müssen keine XML-Drawables erstellen. Im Code kann es einfacher sein. __ Beispiel in 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