web-dev-qa-db-fra.com

Changer la couleur de l'indice EditText lors de l'utilisation de TextInputLayout

J'utilise la nouvelle TextInputLayout de la bibliothèque de conception. Je suis capable de le faire apparaître et de changer la couleur de l'étiquette flottante. Malheureusement, l'indice EditText est toujours toujours blanc. 

J'ai essayé de modifier hintColor dans XML, les styles et les programmes, ainsi que d'utiliser le Android.support.v7.widget.AppCompatEditText.__, mais l'indicateur EditText indique toujours le blanc. 

Voici mon XML pour mes TextInputLayout et EditText

<Android.support.design.widget.TextInputLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android.support.design:hintTextAppearance="@style/GreenTextInputLayout">


    <EditText

    Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:id="@+id/city"
        Android:textColorHint="@color/black"
        Android:hint="@string/city" />

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

Et voici le style que j'utilise pour la variable TextInputLayout (j'ai essayé de rendre l'attribut hintTextColor noir, mais je n'ai rien fait pour moi):

<style name="GreenTextInputLayout" parent="@style/TextAppearance.AppCompat">
    <item name="Android:textColor">@color/homestory_green</item>
</style>
112
SamIAmHarris

On dirait que la vue parent avait un style pour une bibliothèque tierce qui rendait le texte d'édition blanc.

Android:theme="@style/com_mixpanel_Android_SurveyActivityTheme"

Une fois que j'ai enlevé cela, tout a bien fonctionné.

4
SamIAmHarris

Définissez Android:textColorHint dans le thème de votre application:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>

    <item name="Android:textColorHint">@color/secondary_text</item>
</style>

La source

129
mbelsky

Créer custom style dans style.xml

<style name="EditTextHint" parent="TextAppearance.AppCompat">
    <item name="colorAccent">@Android:color/white</item>
    <item name="Android:textColorHint">@color/BackgroundtWhiteColor</item>
    <item name="colorControlNormal">@color/BackgroundtWhiteColor</item>
    <item name="colorControlActivated">@color/your color</item>
    <item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>
</style>

Ensuite, dans votre fichier XML de mise en page, ajoutez theme attribut comme ci-dessous 

 <Android.support.design.widget.TextInputLayout
            Android:theme="@style/EditTextHint"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content">

      <EditText
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"/>

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

espérons que cela fonctionne

60
Deekshith R Moolya

Ajouter la propriété textColorHint à votre texte d'édition

Android:textColorHint="#F6F6F6"

ou n'importe quelle couleur que vous voulez

39
Cherry admin

a le même problème. Résolu en mettant ces lignes dans parent theme. 

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/ColorPrimaryDark</item>
    <item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
    <item name="colorAccent">@color/AccentColor</item>
    <item name="Android:windowTranslucentStatus">true</item>

    <item name="Android:textColorHint">@color/BackgroundtWhiteColor</item>
    <item name="colorControlNormal">@color/BackgroundtWhiteColor</item>
    <item name="colorControlActivated">#ff0000</item>
    <item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>
    <!-- Customize your theme here. -->
</style>

Si vous mettez ces 

<item name="Android:textColorHint">@color/BackgroundtWhiteColor</item>
<item name="colorControlNormal">@color/BackgroundtWhiteColor</item>
<item name="colorControlActivated">#ff0000</item>
<item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>

dans un style séparé et l'appliquer à TextInputLayout ou Edittext, il n'apparaîtra pas. VousAVEZpour le placer dans le thème parent de l'application.

39
SajithK

Reportez-vous au code ci-dessous cela a fonctionné pour moi. Mais cela affectera toutes les couleurs de vos contrôles.

 <!-- In your style.xml file -->
    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
            <!--EditText hint color-->
            <item name="Android:textColorHint">@color/default_app_white</item>
           <!-- TextInputLayout text color-->
            <item name="colorControlActivated">@color/default_app_green</item>
            <!-- EditText line color when EditText on-focus-->
            <item name="colorControlHighlight">@color/default_app_green</item>
            <!-- EditText line color when EditText  in un-focus-->
            <item name="colorControlNormal">@color/default_app_white</item>
        </style>
16
Rajiv Manivannan

Je ne suis pas sûr des causes de votre problème. Ce code fonctionne parfaitement pour moi. Je pense que cela a quelque chose à voir avec l'utilisation de l'espace de nom XML correct (xmlns). Je ne sais pas si l'utilisation d'Android.support.design sans l'attribut d'espace de nom xml est prise en charge. Ou bien cela a quelque chose à voir avec l'attribut textColorHint que vous utilisez sur le texte d'édition lui-même.

Disposition:

<Android.support.design.widget.TextInputLayout
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginTop="5dp"
    app:hintTextAppearance="@style/GreenTextInputLayout">

    <Android.support.v7.widget.AppCompatEditText
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="test"
        Android:inputType="text" />
</Android.support.design.widget.TextInputLayout>

Style:

<style name="GreenTextInputLayout" parent="@Android:style/TextAppearance">
    <item name="Android:textColor">#00FF00</item>
</style>
16
Rolf ツ

Android: textColorHint = "# FFFFFF" fonctionne parfois et ne fonctionne parfois pas. Pour moi, la solution ci-dessous fonctionne parfaitement

Essayez le code ci-dessous, il fonctionne dans votre fichier XML et le thème TextLabel est défini dans style.xml

 <Android.support.design.widget.TextInputLayout
     Android:layout_width="fill_parent"
     Android:layout_height="wrap_content"
     Android:theme="@style/MyTextLabel">

     <EditText
         Android:layout_width="fill_parent"
         Android:layout_height="wrap_content"
         Android:hint="Floating Label"
         Android:id="@+id/edtText"/>

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

Dans le fichier de styles, code TextLabel

 <style name="MyTextLabel" parent="TextAppearance.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="Android:textColorHint">@color/Color Name</item> 
<!--The size of the text appear on label in false state -->
    <item name="Android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/Color Name</item>
    <item name="colorControlNormal">@color/Color Name</item>
    <item name="colorControlActivated">@color/Color Name</item>
 </style>

Si vous souhaitez simplement changer la couleur de l'étiquette dans l'état false, colorAccent, colorControlNormal et colorControlActivated ne sont pas obligatoires. 

10
Summved Jain

Dans TextInputLayout qui contient le EditText, ajoutez:

Android:textColorHint="someColor"
10
Brent Ray

Beaucoup de réponses mais n'ont besoin que d'une ligne pour cela:

Android: textColorHint = "# 000000"

    <EditText
        Android:id="@+id/edtEmail"
        Android:textColorHint="#000000"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"/>
9
Diego Venâncio

Vous pouvez utiliser Android:textColorHint="@color/color_black" dans TextInputlayout Cela a fonctionné pour moi.

<Android.support.design.widget.TextInputLayout
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="@dimen/dp_10"
                Android:textColorHint="@color/color_black"
                app:hintTextAppearance="@style/TextLabel">

                <EditText
                    Android:id="@+id/et_state"
                    style="@style/profile_editTextStyle"

                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content"
                    Android:hint="@string/billingState"
                    Android:text="@string/billingState"
                     />
            </Android.support.design.widget.TextInputLayout>
8
Sonia Rana

Selon ceci: https://code.google.com/p/Android/issues/detail?id=176559

Essaye ça:

<Android.support.design.widget.TextInputLayout
    Android:textColorHint="#A7B7C2"
    Android:layout_width="match_parent"
    Android:layout_height="50dp">

    <EditText
        Android:id="@+id/et_confirm_password"
        Android:textColor="@Android:color/black"
        Android:hint="Confirm password"
        Android:inputType="textPassword"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent" />
 </Android.support.design.widget.TextInputLayout>

Cela fonctionne dans 23.1.1

7
Da DUAN

essayez ceci peut ceci aider  

      edittext.addTextChangedListener(new  TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "onTextChanged", 2000).show();;
            //newuser.setTextColor(Color.RED);
            edittext.setHintTextColor(Color.RED);

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "afterTextChanged", 2000).show();;

        }
    });
4
jeet parmar
        <Android.support.design.widget.TextInputLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content">

            <EditText
                Android:id="@+id/name"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:hint="Name"
                Android:textColor="@color/black"
                Android:textColorHint="@color/grey"/>
        </Android.support.design.widget.TextInputLayout>

Utilisez textColorHint pour définir la couleur souhaitée en tant que couleur de conseil pour EditText. Le fait est que l'indice dans EditText disparaît pas lorsque vous tapez quelque chose, mais immédiatement lorsque EditText est activé (avec une animation cool). Vous le remarquerez clairement lorsque vous passerez au focus et au texte d'édition.

2
Henry
<item name="colorAccent">@Android:color/black</item>

changez votre couleurAccent sur votre couleur désirée dans votre thème, cela changera votre ligne EditText, votre curseur et votre indice

ou vous pouvez également inclure ce style dans votre style.xml

<style name="TextLabel" parent="TextAppearance.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="Android:textColorHint">@Android:color/black</item>
    <item name="Android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@Android:color/black</item>
    <item name="colorControlNormal">@Android:color/black</item>
    <item name="colorControlActivated">@Android:color/black</item>
</style>

puis à l'intérieur de votre TextInputLayout, vous pouvez le mettre comme ceci

<Android.support.design.widget.TextInputLayout
            Android:id="@+id/input_layout_password"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:theme="@style/TextLabel">
            <EditText
                Android:layout_width="fill_parent"
                Android:layout_height="wrap_content"
                Android:drawableLeft="@drawable/password"
                Android:drawableStart="@drawable/password"
                Android:maxLines="1"
                Android:hint="password"
                Android:inputType="textWebPassword" />

        </Android.support.design.widget.TextInputLayout>
2
Sarmad Aijaz

tard, mais cela peut aider quelqu'un que j'ai fait comme ça

<Android.support.design.widget.TextInputLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_centerInParent="true"
        Android:layout_marginLeft="30dp"
        Android:layout_marginStart="30dp"
        Android:textColorHint="#8cffffff">

        <Android.support.v7.widget.AppCompatEditText
            Android:id="@+id/email_edit"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:hint="@string/security_email"
            Android:inputType="textEmailAddress"
            Android:textColor="@color/white"
            app:backgroundTint="#8cffffff" />
    </Android.support.design.widget.TextInputLayout>
1
Mateen Chaudhry

Vous devez définir la couleur de l'indice sur TextInputLayout.

0
Biro Csaba

Essayez le code ci-dessous:

La couleur de haute lumière est le blanc:

 <Android.support.design.widget.TextInputLayout
        Android:id="@+id/input_layout_mobile"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/TextStyle"
        >

        <EditText
            Android:id="@+id/input_mobile"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:singleLine="true"
            Android:drawablePadding="14dp"
            Android:drawableLeft="8dp"
            Android:textColor="@color/white"
            Android:hint="Mobile" />
    </Android.support.design.widget.TextInputLayout>

style: TextStyle

    <style name="TextStyle" parent="TextAppearance.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="Android:textColorHint">@color/white</item>
    <item name="Android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/white</item>
    <item name="colorControlNormal">@color/white</item>
    <item name="colorControlActivated">@color/white</item>
     </style>
0
Chhornkimchheng

Voici mon expérience avec ce problème similaire et la solution requise.

Condition:

  • Besoin de créer personnaliser TextInputEditText (peut dire que certaines doivent être transparentes et que d'autres ne doivent pas l'être mais utilisent des couleurs personnalisées pour divers événements)

Problème rencontré:

  • Android:textColorHint ne fonctionne pas correctement.

Solutions essayées mais qui échouent:

  • Utilisé Android:textColorHint avec style et appliqué à TextInputEditText. Aucun résultat ou différence.
  • Définissez Android:textColorHint dans le thème de l'application appliqué. Cela a aidé, mais il était maintenant configuré pour une application complète. (Pas à la hauteur de l'exigence)

Après beaucoup de RnD, la meilleure solution trouvée était dans un article décrivant la nécessité d'appliquer le thème à TextInputLayout ou à sa vue parent plutôt qu’à l’application du style à TextInputEditText ou à sa vue parent.

S'il vous plaît vérifier TextInputLayout Theming approprié qui a dit que nous sommes sur la mauvaise voie.

0
Harpreet
 <Android.support.design.widget.TextInputLayout
        Android:id="@+id/input_layout_passdword"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:textColorHint="#d3d3d3">
        <EditText
            Android:id="@+id/etaddrfess_ciwty"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:background="@Android:color/transparent"
            Android:bottomLeftRadius="10dp"
            Android:bottomRightRadius="50dp"
            Android:fontFamily="@font/frutiger"
            Android:gravity="start"
            Android:hint="@string/address_city"
            Android:padding="10dp"
            Android:textColor="#000000"
            Android:textColorHint="#000000"
            Android:textSize="14sp"
            Android:topLeftRadius="10dp"
            Android:topRightRadius="10dp" />
    </Android.support.design.widget.TextInputLayout>``
0