web-dev-qa-db-fra.com

Comment changer la couleur de la ligne dans EditText

Je crée un EditText dans mon fichier XML de mise en page 

Mais je veux changer la ligne de couleur dans EditText de Holo à (par exemple) red . Comment cela peut-il être fait? 

enter image description here

135
Alex

C’est le meilleur outil que vous pouvez utiliser pour toutes les vues et GRATUITEMENT grâce à @ Jérôme Van Der Linden

Android Holo Colors Generator vous permet de créer facilement des composants Android tels que EdiText ou spinner avec vos propres couleurs pour votre application Android. Il générera tous les neuf actifs de correctif nécessaires, ainsi que les styles et dessins XML que vous pouvez copier directement dans votre projet.

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

UPDATE 1

Ce domaine semble expiré mais le projet est open source, vous pouvez le trouver ici

https://github.com/jeromevdl/Android-holo-colors

l'essayer

cette image mise en arrière-plan de EditText

Android:background="@drawable/textfield_activated"

enter image description here


UPDATE 2

Pour API 21 ou supérieure, vous pouvez utiliser Android:backgroundTint

<EditText
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="Underline color change"
        Android:backgroundTint="@Android:color/holo_red_light" />

Mise à jour 3 Nous avons maintenant avec le support précédent AppCompatEditText 

Remarque: Nous devons utiliser app: backgroundTint au lieu de Android: backgroundTint

<Android.support.v7.widget.AppCompatEditText
   Android:layout_width="match_parent"
   Android:layout_height="wrap_content"
   Android:hint="Underline color change"
    app:backgroundTint="@color/blue_gray_light" />
209
MilapTank

Je n'aime pas les réponses précédentes. La meilleure solution consiste à utiliser:

<Android.support.v7.widget.AppCompatEditText

      app:backgroundTint="@color/blue_gray_light" />

Android: backgroundTint pour EditText fonctionne uniquement sur API21 + . À cause de cela, nous devons utiliser la bibliothèque de support et AppCompatEditText

Note: nous devons utiliser app: backgroundTint au lieu de Android: backgroundTint.

148
Mladen Rakonjac

Vous pouvez également changer rapidement la couleur de soulignement de EditText en colorant l’arrière-plan de EditText de la manière suivante:

<EditText
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:hint="Something or Other"
            Android:backgroundTint="@Android:color/holo_green_light" />
66
Damian Esteves

Par programme, vous pouvez essayer:

editText.getBackground().mutate().setColorFilter(getResources().getColor(Android.R.color.holo_red_light), PorterDuff.Mode.SRC_ATOP);
17
doctorram

pour les api inférieurs à 21, vous pouvez utiliser l'attribut theme dans edittext.

<style name="MyEditTextTheme">
        <item name="colorControlNormal">#FFFFFF</item>
        <item name="colorControlActivated">#FFFFFF</item>
        <item name="colorControlHighlight">#FFFFFF</item>
    </style>

utiliser ce style dans edittext comme 

<EditText       Android:id="@+id/etPassword"
                Android:layout_width="match_parent"
                Android:layout_height="@dimen/user_input_field_height"
                Android:layout_marginTop="40dp"
                Android:hint="@string/password_hint"
                Android:theme="@style/MyEditTextTheme"
                Android:singleLine="true" />
10
Rahul

je pense que le meilleur moyen est par thème:

<style name="MyEditTextTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorControlNormal">@color/black</item>
        <item name="colorControlActivated">@color/action_blue</item>
        <item name="colorControlHighlight">@color/action_blue</item>
    </style>

<style name="addressbookitem_edit_style" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="Android:layout_width">match_parent</item>
        <item name="Android:layout_height">wrap_content</item>
        <item name="Android:textSize">13sp</item>

<item name="Android:theme">@style/MyEditTextTheme</item>

<Android.support.v7.widget.AppCompatEditText
            style="@style/addressbookitem_edit_style"/>
10
j2emanue

Pour changer la couleur de soulignement d’Edittext:

Si vous souhaitez que l'ensemble de l'application partage ce style, procédez comme suit.

(1) aller dans le fichier styles.xml. Votre AppTheme qui hérite du parent de Theme.AppCompat.Light.DarkActionBar (dans mon cas) sera le parent de base de tous les fichiers de style de votre application. Changez le nom de celui-ci en «AppBaseTheme». Créez un autre style juste en dessous, portant le nom AppTheme et héritant d'AppBaseTheme que vous venez de modifier. Cela ressemblera à ceci:

<!-- Base application theme. -->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="windowActionBar">false</item>
    <!--see http://www.google.com/design/spec/style/color.html#color-color-palette-->
    <item name="colorPrimary">@color/material_brown_500</item>
    <item name="colorPrimaryDark">@color/material_brown_700</item>
    <item name="colorAccent">@color/flamingo</item>

<style name="AppTheme" parent="AppBaseTheme">
    <!-- Customize your theme here. -->
</style>

Modifiez ensuite le paramètre «colorAccent» en fonction de la couleur souhaitée pour la couleur de la ligne EditText. 

(2) Si vous avez d'autres dossiers de valeurs avec style.xml, cette étape est très importante. Parce que ce fichier héritera de votre précédent fichier XML parent. Par exemple, j'ai values-19/styles.xml. Ceci est spécifiquement pour KitKat et ci-dessus. Modifiez son parent en AppBaseTheme et assurez-vous de vous débarrasser de «colorAccent» afin qu’il ne remplace pas la couleur du parent. Aussi, vous devez conserver les éléments spécifiques à la version 19. Cela ressemblera à ceci.

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <item name="Android:windowTranslucentStatus">true</item>
    </style>
</resources>
9
Suhyun Kim

La couleur de la ligne est définie par la propriété background de EditText. Pour le changer, vous devez changer le Android:background dans le fichier de disposition.

Je dois noter que ce style est obtenu en utilisant un dessin à 9 patchs. Si vous regardez dans le SDK, vous pouvez voir que le fond de la EditText est cette image:

textfield_activated_holo_light.9.png

Pour le changer, vous pouvez l'ouvrir dans un programme de manipulation d'images et le colorer dans la couleur souhaitée. Enregistrez-le sous le nom bg_edit_text.9.png et placez-le dans votre dossier pouvant être dessiné. Vous pouvez maintenant l’appliquer comme fond d’écran pour votre EditText comme ceci:

Android:background="@drawable/bg_edit_text"
6
Egor Neliuba

C'est assez simple (Obligatoire: Minimum API 21) ... 

  1. Allez dans votre xml et sélectionnez le champ EditText
  2. Sur le côté droit, vous pouvez voir la fenêtre "Attributs". Sélectionnez "Afficher tous les attributs".
  3. Il suffit de chercher 'teinte'
  4. Et ajoutez/modifiez le paramètre 'backgroundTint' en un hexagone de couleur de votre choix (dites # FF0000)

 enter image description here

 enter image description here

Gardez le codage ........ :)

5
Krishna Raj Salim

Vous pouvez changer la couleur en colorant l’arrière-plan <EditText Android:backgroundTint="@color/red"/> 

4
danish

L'arrière-plan des widgets est Dépend du niveau de l'API .

ALTERNATIVE 1

Vous pouvez fournir une image personnalisée à votre arrière-plan EditText en 

Android:background="@drawable/custom_editText"

Votre image devrait ressembler à quelque chose comme ça. Cela vous donnera l'effet désiré.

enter image description here

ALTERNATIVE 2

Définissez ce xml sur votre attribut d'arrière-plan EditText.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
 Android:shape="rectangle" Android:padding="10dp">
<solid Android:color="#4C000000"/>
    <corners Android:bottomRightRadius="5dp"
             Android:bottomLeftRadius="5dp"
             Android:topLeftRadius="5dp"
             Android:topRightRadius="5dp"/>
</shape>

Cela aura la même apparence de votre EditText sur chaque API.

4
CodeWarrior

Si vous voulez une ligne plate, vous pouvez le faire facilement avec XML. Voici l'exemple xml:

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item
        Android:top="-1dp"
        Android:left="-1dp"
        Android:right="-1dp"
        Android:bottom="1dp"
        >
        <shape Android:shape="rectangle">
            <stroke Android:width="1dp" Android:color="#6A9A3A"/>
        </shape>
    </item>
</layer-list>

Remplacez la forme par un sélecteur si vous souhaitez fournir une largeur et une couleur différentes pour un edittext concentré.

3
Sfseyhan

Vous pouvez modifier la couleur de EditText par programme en utilisant simplement cette ligne de code: edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));

3
matin ashtiani

Utilisez cette méthode .. et modifiez-la en fonction de vos noms de vue. Ce code fonctionne très bien.

 private boolean validateMobilenumber() {
            if (mobilenumber.getText().toString().trim().isEmpty() || mobilenumber.getText().toString().length() < 10) {
                input_layout_mobilenumber.setErrorEnabled(true);
                input_layout_mobilenumber.setError(getString(R.string.err_msg_mobilenumber));
               // requestFocus(mobilenumber);
                return false;
            } else {
                input_layout_mobilenumber.setError(null);
                input_layout_mobilenumber.setErrorEnabled(false);
                mobilenumber.setBackground(mobilenumber.getBackground().getConstantState().newDrawable());
            }
2
Shahid Sarwar

La meilleure approche consiste à utiliser un AppCompatEditText avec backgroundTint attribut de app namespace. c'est à dire.

    <Android.support.v7.widget.AppCompatEditText
    Android:layout_width="match_parent"      
    app:backgroundTint="YOUR COLOR"
    Android:layout_height="wrap_content" />

lorsque nous utilisons Android:backgroundTint, cela ne fonctionne que dans API21 ou plus, mais app:backgroundTint fonctionne avec tous les niveaux d'API de votre application.

2
Ankush
 <EditText
        Android:id="@+id/et_password_tlay"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="Password"
        Android:textColorHint="#9e9e9e"
        Android:backgroundTint="#000"
        Android:singleLine="true"
        Android:drawableTint="#FF4081"
        Android:paddingTop="25dp"
        Android:textColor="#000"
        Android:paddingBottom="5dp"
        Android:inputType="textPassword"/>

    <View
        Android:id="@+id/UnderLine"
        Android:layout_width="match_parent"
        Android:layout_height="1dp"
        Android:layout_below="@+id/et_password_tlay"
        Android:layout_centerHorizontal="true"
        Android:background="#03f94e" />

** c'est un de faire avec vue **

Essayez de la manière suivante, il convertira la couleur de la ligne inférieure de EditText, lorsqu'elle est utilisée comme propriété d'arrière-plan.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item
        Android:left="@dimen/spacing_neg"
        Android:right="@dimen/spacing_neg"
        Android:top="@dimen/spacing_neg">
        <shape>
            <solid Android:color="@Android:color/transparent" />
            <stroke
                Android:width="@dimen/spacing_1"
                Android:color="@Android:color/black" />
        </shape>
    </item>
</layer-list>
1
ashishdhiman2007

Utilisez Android: propriété d'arrière-plan pour cet edittext. Passez-y votre image de dossier pouvant être dessinée . Par exemple,

Android:background="@drawable/abc.png"
1
VVB

Cela peut être fait simplement en incluant cet Android:theme="@style/AppTheme.AppBarOverlay comme attribut dans votre editText .__ et en ajoutant ceci <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> à vos styles

0
nivla360

drawable/bg_edittext.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:gravity="bottom">
        <shape>
            <size Android:height="1dp" />
            <solid Android:color="@Android:color/black" />
        </shape>
    </item>
</layer-list>

Définissez sur EditText

<Android.support.v7.widget.AppCompatEditText
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="@drawable/bg_edittext"/>
0
Ketan Ramani