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"
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)
}
<?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>