web-dev-qa-db-fra.com

comment changer la couleur de focus d'EditText dans Android

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

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