it-swarm.com.de

Ändern Sie die EditText-Hinweisfarbe, wenn Sie TextInputLayout verwenden

Ich verwende die neue TextInputLayout aus der Design-Bibliothek. Ich bin in der Lage, die Farbe des Floating-Labels anzuzeigen und zu ändern. Leider ist der tatsächliche EditText-Hinweis jetzt immer weiß. 

Ich habe versucht, die hintColor in XML, Formatvorlagen und programmgesteuert zu ändern, und auch den Android.support.v7.widget.AppCompatEditText.__ verwendet. Der EditText-Hinweis zeigt jedoch immer Weiß. 

Hier ist mein XML für meine TextInputLayout und 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>

Und hier ist der Stil, den ich für TextInputLayout verwende (ich habe versucht, das hintTextColor-Attribut schwarz zu machen, aber nichts für mich getan):

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

Anscheinend hatte die übergeordnete Ansicht einen Stil für eine Drittanbieter-Bibliothek, die dazu führte, dass EditText weiß wurde.

Android:theme="@style/com_mixpanel_Android_SurveyActivityTheme"

Sobald ich das entfernte, funktionierte alles gut.

4
SamIAmHarris

Definieren Sie Android:textColorHint in Ihrem Anwendungsthema:

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

Quelle

129
mbelsky

Erstellen Sie custom style in 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>

Fügen Sie dann in Ihrer Layout-XML-Datei theme attribute wie folgt hinzu 

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

hoffe das klappt

60

Fügen Sie dem Edit-Text die Eigenschaft textColorHint hinzu

Android:textColorHint="#F6F6F6"

oder welche Farbe Sie möchten

39
Cherry admin

habe das gleiche problem. Diese Zeilen wurden in parent theme eingefügt. 

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

Wenn Sie diese setzen 

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

in einem separaten Stil und wenden Sie es auf TextInputLayout oder Edittext an, es wird nicht angezeigt. Sie HABEN, um es im übergeordneten Design der Anwendung zu platzieren.

39
SajithK

Verweisen Sie auf den folgenden Code, der für mich funktioniert hat. Aber er wirkt sich auf alle Steuerelemente aus.

 <!-- 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

Ich bin nicht sicher, was Ihr Problem verursacht, wenn dieser Code perfekt für mich funktioniert. Ich denke, es hat etwas mit der Verwendung des richtigen XML-Namespaces (xmlns) zu tun. Ich bin nicht sicher, ob die Verwendung von Android.support.design ohne XML-Namespace-Attribut unterstützt wird. Oder es hat etwas mit dem textColorHint-Attribut zu tun, das Sie im EditText selbst verwenden.

Layout:

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

Stil:

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

Android: textColorHint = "# FFFFFF" funktioniert manchmal und manchmal nicht. Bei mir funktioniert die Lösung einwandfrei

Probieren Sie den folgenden Code aus. In Ihrer XML-Datei ist das TextLabel-Design in style.xml definiert

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

In Styles Folder TextLabel Code

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

Wenn Sie nur die Farbe des Etiketts im Status "false" ändern möchten, sind colorAccent, colorControlNormal und colorControlActivated nicht erforderlich 

10
Summved Jain

Fügen Sie im TextInputLayout, das den EditText enthält, Folgendes hinzu:

Android:textColorHint="someColor"
10
Brent Ray

Viele Antworten, brauchen dafür aber nur eine Zeile:

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

Sie können Android:textColorHint="@color/color_black" in TextInputlayout verwenden.

<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

Entsprechend diesem: https://code.google.com/p/Android/issues/detail?id=176559

Versuche dies:

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

Es funktioniert in 23.1.1

7
Da DUAN

probieren Sie diese Hilfe vielleicht  

      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>

Verwenden Sie textColorHint, um die Farbe festzulegen, die Sie als Hinweisfarbe für den EditText verwenden möchten. Die Sache ist, dass Hint im EditText nicht verschwindet, wenn Sie etwas eingeben, sondern sofort, wenn der EditText den Fokus erhält (mit einer coolen Animation). Sie werden dies deutlich bemerken, wenn Sie den Fokus weg und zum EditText wechseln.

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

Ändern Sie Ihren colorAccent in die gewünschte Farbe innerhalb Ihres Designs. Dies ändert Ihre EditText-Zeile, den Cursor sowie Ihren Hinweis

oder Sie können diesen Stil auch in Ihre style.xml einfügen

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

dann können Sie es in Ihr TextInputLayout so einfügen

<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

spät aber es kann jemandem helfen, den ich so gemacht habe

<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

Sie müssen für TextInputLayout eine Hinweisfarbe festlegen.

0
Biro Csaba

Probieren Sie den folgenden Code aus:

Die Lichtfarbe ist Weiß:

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

stil: 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

Hier ist meine Erfahrung mit diesem ähnlichen Problem und der erforderlichen Lösung.

Voraussetzung:

  • TextInputEditText muss angepasst werden (einige sollten transparent sein, andere sollten nicht transparent sein, aber benutzerdefinierte Farben für verschiedene Ereignisse verwenden)

Problem konfrontiert:

  • Android:textColorHint funktioniert nicht wie erforderlich.

Lösungen ausprobiert, die fehlgeschlagen sind:

  • Android:textColorHint wurde im Stil verwendet und auf TextInputEditText angewendet. Keine Ergebnisse oder Unterschiede.
  • Stellen Sie Android:textColorHint im angewendeten Thema der Anwendung ein. Es hat geholfen, aber es war jetzt für die gesamte Anwendung eingestellt. (Nicht den Anforderungen entsprechend)

Nach viel RnD war die beste gefundene LÖSUNG in einem Artikel, in dem beschrieben wurde, dass wir das Thema auf TextInputLayout oder anwenden müssen auf die übergeordnete Ansicht, anstatt nur Stil auf TextInputEditText oder auf die übergeordnete Ansicht anzuwenden

Bitte überprüfen Sie TextInputLayout proper Theming was darauf hinweist, dass wir auf dem falschen Weg sind.

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