web-dev-qa-db-fra.com

EditText souligne la propriété de texte ci-dessous

Je voudrais changer la couleur bleue en dessous du texte modifié, je ne sais pas de quelle propriété il s'agit. 

J'ai essayé d'utiliser une couleur d'arrière-plan différente, mais cela n'a pas fonctionné.

J'ai joint une image ci-dessous:

enter image description here

99
AndroidEnthusiast

Il est en fait assez facile de définir la couleur de soulignement d'un EditText par programme (une seule ligne de code).

Pour définir la couleur:

editText.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);

Pour enlever la couleur:

editText.getBackground().clearColorFilter();

Remarque: lorsque le texte d'édition a le focus activé, la couleur que vous avez définie ne prendra pas effet, mais une couleur de focus.

Référence de l'API:

Drawable # setColorFilter

Drawable # clearColorFilter

83
Jing Li

Utilisez Android:backgroundTint="" dans votre mise en page EditText xml.

Pour les api <21, vous pouvez utiliser AppCompatEditText à partir de la bibliothèque de support technique puisapp:backgroundTint=""

75
Soheil Setayeshi

Vous devez utiliser une image d'arrière-plan différente, et non une couleur, pour chaque état de la EditText (focus, activé, activé).

http://Android-holo-colors.com/

Dans le site ci-dessus, vous pouvez obtenir des images de nombreux composants du thème Holo. Il suffit de sélectionner "EditText" et la couleur que vous voulez. Vous pouvez voir un aperçu au bas de la page.

Téléchargez le fichier .Zip et copiez-collez les ressources de votre projet (images et XML).

si votre XML est nommé: apptheme_edit_text_holo_light.xml (ou quelque chose de similaire):

  1. Allez dans votre XML "styles.xml" et ajoutez le style personnalisé EditText:

    <style name="EditTextCustomHolo" parent="Android:Widget.EditText">
       <item name="Android:background">@drawable/apptheme_edit_text_holo_light</item>
       <item name="Android:textColor">#ffffff</item>
    </style>
    
  2. Faites ceci dans votre EditText:

    <EditText
       Android:layout_width="wrap_content"
       Android:layout_height="wrap_content"
       style="@style/EditTextCustomHolo"/>
    

Et ça y est, j'espère que ça vous aide.

38
Akariuz

Cela fonctionne bien pour l'ancienne version et la nouvelle version d'Android (fonctionne même même sur API 10!).

Définissez ce style dans votre styles.xml:

<style name="EditText.Login" parent="Widget.AppCompat.EditText">
    <item name="Android:textColor">@Android:color/white</item>
    <item name="Android:textColorHint">@Android:color/darker_gray</item>
    <item name="colorAccent">@color/blue</item>
    <item name="colorControlNormal">@color/blue</item>
    <item name="colorControlActivated">@color/blue</item>
</style>

Et maintenant, dans votre XML, définissez ceci comme thème et style (style pour définir textColor et theme pour définir toutes les autres choses):

<EditText
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:inputType="text"
    style="@style/EditText.Login"
    Android:theme="@style/EditText.Login"/>

Modifier

Cette solution provoque un petit problème d'interface utilisateur sur les versions plus récentes d'Android (Lollipop ou Marshmallow) que les poignées de sélection sont soulignées.

Ce problème est discuté dans ce fil de discussion . (Je n'ai pas essayé cette solution personnellement)

20
Sufian

vous pouvez changer Underline of EditText color en le spécifiant dans styles.xml . Dans le thème de votre application, styles.xml, ajoutez ce qui suit.

<item name="Android:textColorSecondary">@color/primary_text_color</item> 

Comme l'a souligné ana dans la section commentaires

  <item name="Android:colorControlActivated">@color/black</item>

définir ce style de thème fonctionne bien pour changer la couleur d’un soulignement edittext. 

17
Dharani Kumar

Vous devez donc créer un nouveau fichier .xml dans votre dossier pouvant être dessiné.

Dans ce fichier, collez ce code:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
   <item
    Android:bottom="8dp"
    Android:left="-3dp"
    Android:right="-3dp"
    Android:top="-3dp">
    <shape Android:shape="rectangle">
     <stroke
       Android:width="1dp"
       Android:color="@color/white"/>
     </shape>
   </item>
</layer-list>

Et dans votre EditText, définissez

Android:background="@drawable/your_drawable"

Vous pouvez jouer avec votre xml dessinable, définir des coins, des rembourrages, etc.

12
Vulovic Vukasin

Dans le style de votre application, définissez la propriété colorAccent . Ici vous trouvez un exemple

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/action_bar</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/action_bar</item>
</style>
9
Roberto

Utilisez le code ci-dessous pour changer la couleur de fond de la bordure du texte à modifier.

Créer un nouveau fichier XML sous drawable.

abc.xml

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">
    <solid Android:color="#00000000" />
    <stroke Android:width="1dip" Android:color="#ffffff" />
</shape>

et l'ajouter comme fond de votre texte édité

Android:background="@drawable/abc"
1
InnocentKiller

Pour changer la couleur de la ligne de fond, vous pouvez l'utiliser dans le thème de votre application:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="colorControlNormal">#c5c5c5</item>
    <item name="colorControlActivated">#ffe100</item>
    <item name="colorControlHighlight">#ffe100</item>
</style>

Pour changer le thème suivant:

<style name="TextAppearence.App.TextInputLayout" parent="@Android:style/TextAppearance">
<item name="Android:textColor">#4ffd04[![enter image description here][1]][1]</item>
</style>

et utilisez ce thème dans votre mise en page:

 <Android.support.design.widget.TextInputLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_margin="20dp"
    app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">

    <EditText
        Android:id="@+id/edtTxtFirstName_CompleteProfileOneActivity"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:capitalize="characters"
        Android:hint="User Name"
        Android:imeOptions="actionNext"
        Android:inputType="text"
        Android:singleLine="true"
        Android:textColor="@Android:color/white" />

</Android.support.design.widget.TextInputLayout>

 enter image description here

1
SAndroidD

changez votre colorAccent de quelle couleur vous avez besoin de cet ensemble de couleurs sur colorAccent et lancez la sortie

0
MD Khali

Si vous n'avez pas besoin de prendre en charge les périphériques avec une API <21, utilisez backgroundHint dans XML, par exemple:

 <EditText
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:inputType="textPersonName"
            Android:hint="Task Name"
            Android:ems="10"
            Android:id="@+id/task_name"
            Android:layout_marginBottom="15dp"
            Android:textAlignment="center"
            Android:textColor="@Android:color/white"

            Android:textColorLink="@color/blue"
            Android:textColorHint="@color/blue"
            Android:backgroundTint="@color/lighter_blue" />

Pour un meilleur support et des solutions de rechange, utilisez la solution @Akariuz . BackgroundHint est la solution la plus indolore, mais non compatible avec les versions antérieures, en fonction de vos besoins.

0
MoMo