Comment puis-je changer la couleur de focus (orange) sur une zone de texte? La couleur de mise au point Est un petit bord autour du contrôle entier et est lumineuse.__orange lorsque le contrôle a la mise au point. Comment puis-je changer la couleur de ce Concentrer sur une couleur différente? Quelqu'un peut-il m'aider à résoudre ce problème? Merci d'avance,
Vous devrez créer/modifier votre propre image NinePatch pour remplacer celle par défaut, et l'utiliser comme arrière-plan de votre EditText. Si vous regardez dans votre dossier SDK, sous votre plate-forme, puis res/drawable, vous devriez trouver l'image NinePatch pour l'état d'activation EditText. Si c'est tout ce que vous souhaitez modifier, vous pouvez simplement l'intégrer à Photoshop ou à votre logiciel de retouche d'images, et modifier la couleur orange en une couleur de votre choix. Puis enregistrez-le dans votre dossier pouvant être dessiné et créez un nouveau StateListDrawable, par exemple, comme ci-dessous:
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>
Je ne connais pas les noms réels des NinePatches par défaut de EditText. Remplacez-les si nécessaire. La clé est simplement d'utiliser les images @Android:drawable
pour celles que vous n'avez pas modifiées votre dossier dessinable), puis utilisez votre dessin modifiable modifié pour votre état ciblé.
Vous pouvez ensuite définir cette StateListDrawable comme arrière-plan de votre TextView, comme suit:
<TextView
Android:background="@drawable/edittext_modified_states"
Vous n'avez pas besoin de créer des dessins XML. Cela peut être plus simple dans le code . Exemple dans 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>