使用TextInputLayout时更改EditText提示颜色

Sam*_*ris 134 android android-edittext android-textattributes android-support-library android-design-library

我正在使用TextInputLayout设计库中的新功能.我可以让它显示并更改浮动标签的颜色.不幸的是,实际EditText提示现在总是白色的.

我试过用XML,样式和编程方式更改hintColor,并尝试使用android.support.v7.widget.AppCompatEditTextEditText提示总是显示白色.

这是我TextInputLayout和我的XMLEditText

<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>
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的样式TextInputLayout(我尝试将hintTextColor属性设为黑色,但没有为我做任何事情):

<style name="GreenTextInputLayout" parent="@style/TextAppearance.AppCompat">
    <item name="android:textColor">@color/homestory_green</item>
</style>
Run Code Online (Sandbox Code Playgroud)

mbe*_*sky 152

android:textColorHint在您的应用主题中定义:

<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>
Run Code Online (Sandbox Code Playgroud)

资源


小智 69

在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>
Run Code Online (Sandbox Code Playgroud)

然后在布局xml文件中,添加如下主题属性

 <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>
Run Code Online (Sandbox Code Playgroud)

希望这有效

  • 显示“错误夸大类EditText”。请帮忙 ! (3认同)

小智 46

将textColorHint属性添加到编辑文本中

android:textColorHint="#F6F6F6"
Run Code Online (Sandbox Code Playgroud)

或者你想要的颜色


Saj*_*thK 41

得到了同样的问题.通过将这些行放在主题中来解决.

 <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>
Run Code Online (Sandbox Code Playgroud)

如果你把这些

<item name="android:textColorHint">@color/BackgroundtWhiteColor</item>
<item name="colorControlNormal">@color/BackgroundtWhiteColor</item>
<item name="colorControlActivated">#ff0000</item>
<item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>
Run Code Online (Sandbox Code Playgroud)

在单独的样式并将其应用于TextInputLayoutEdittext它将不会出现.您HAVE把它放在应用程序的父主题.

  • 使用这个小部件在应用程序中无法使用多个输入样式真的很令人沮丧,但据我所知,你是对的.:/ (3认同)
  • 嗯,没有必要在整个应用程序中使用它.您只能将此主题应用于清单文件中的一个活动.并为其余的活动创建另一个主题. (3认同)
  • 最后一个解决了我的问题的答案!! 谢谢 (2认同)

Rol*_*f ツ 20

我不确定是什么导致你的问题,这个代码适合我.我认为它与使用正确的xml名称空间(xmlns)有关.我不确定是否支持使用没有xml名称空间属性的android.support.design.或者它与textColorHint您在EditText本身上使用的属性有关.

布局:

<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>
Run Code Online (Sandbox Code Playgroud)

样式:

<style name="GreenTextInputLayout" parent="@android:style/TextAppearance">
    <item name="android:textColor">#00FF00</item>
</style>
Run Code Online (Sandbox Code Playgroud)

  • 这仍然像我所拥有的那样.我遇到的问题是,在用户触摸EditText之前,EditText颜色为白色.当用户触摸EditText时,TextInputLayout标签为绿色并且工作正常. (2认同)

Raj*_*nan 18

请参考下面为我工作的代码.但它会影响您的所有控件颜色.

 <!-- 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>
Run Code Online (Sandbox Code Playgroud)


Gab*_*tti 17

使用Material Components 库,您可以TextInputLayout使用以下方法自定义提示文本颜色:

  • 在布局中:

    • app:hintTextColor 属性:标签折叠且文本字段处于活动状态时的颜色
    • android:textColorHint 属性:所有其他文本字段状态(例如休息和禁用)下标签的颜色

就像是:

<com.google.android.material.textfield.TextInputLayout
     app:hintTextColor="@color/mycolor"
     android:textColorHint="@color/text_input_hint_selector"
     .../>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明在此处输入图片说明

  • 刚刚想到,还可以在样式中声明`&lt;item name="hintTextColor"&gt;@color/lsHintTextColor&lt;/item&gt;`。 (2认同)

小智 14

在包含EditText的TextInputLayout中,添加:

android:textColorHint="someColor"
Run Code Online (Sandbox Code Playgroud)


Die*_*cio 13

很多答案,但只需要一行:

机器人:textColorHint = "#000000"

    <EditText
        android:id="@+id/edtEmail"
        android:textColorHint="#000000"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)


Sum*_*ain 11

android:textColorHint ="#FFFFFF"某个时候有效,有时候也没有.对我来说,解决方案完美无缺

尝试使用下面的代码它在您的XML文件中,TextLabel主题在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>
Run Code Online (Sandbox Code Playgroud)

在样式文件夹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>
Run Code Online (Sandbox Code Playgroud)

如果您只想在false状态下更改标签的颜色,则不需要colorAccent,colorControlNormal和colorControlActivated


Muh*_*ood 10

如果您使用的是材料设计库。目前,我正在使用该版本

实现 'com.google.android.material:material:1.3.0-alpha01'

1 - 在 TextInputLayout 静止时设置颜色。

<item name="android:textColorHint">@color/your_color_hint</item>
Run Code Online (Sandbox Code Playgroud)

2 - 当 TextInputLayout 浮动/聚焦/点击时设置颜色。

<item name="hintTextColor">@color/your_color_floating_hint</item>
Run Code Online (Sandbox Code Playgroud)

3 - 在 TextInputLayout 下设置线条的颜色。

<item name="boxStrokeColor">@color/TextViewColor_line</item>
Run Code Online (Sandbox Code Playgroud)

4 - 在 TextInputLayout 下设置错误的颜色。

<item name="boxStrokeErrorColor">@color/colorPrimary</item>
Run Code Online (Sandbox Code Playgroud)


小智 9

你可以android:textColorHint="@color/color_black"在里面使用TextInputlayout它对我有用.

<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>
Run Code Online (Sandbox Code Playgroud)


Da *_*UAN 8

根据这个:https: //code.google.com/p/android/issues/detail?id = 176559

试试这个:

<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>
Run Code Online (Sandbox Code Playgroud)

它适用于23.1.1


Sam*_*ris 5

看起来父视图具有第3方库的样式,这导致EditText为白色。

android:theme="@style/com_mixpanel_android_SurveyActivityTheme"
Run Code Online (Sandbox Code Playgroud)

一旦删除此文件,一切正常。


jee*_*mar 5

试试这个可能有帮助

      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();;

        }
    });
Run Code Online (Sandbox Code Playgroud)


Hen*_*nry 5

        <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>
Run Code Online (Sandbox Code Playgroud)

使用 textColorHint 将您想要的颜色设置为 EditText 的提示颜色。问题是 EditText 中的 Hint 不是在您键入内容时消失,而是在 EditText 获得焦点时立即消失(带有很酷的动画)。当您将焦点转移到 EditText 时,您会清楚地注意到这一点。


Mat*_*hry 5

晚了,但它可能会帮助我这样做的人

<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>
Run Code Online (Sandbox Code Playgroud)