首页 文章

使用TextInputLayout时更改EditText提示颜色

提问于
浏览
116

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

我已尝试在XML,样式和编程方式中更改hintColor,并尝试使用 android.support.v7.widget.AppCompatEditTextEditText 提示始终显示为白色 .

这是我的 TextInputLayoutEditText 的XML

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

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

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

19 回答

  • 40

    在您的应用程序主题中定义 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>
    

    Source

  • 17

    在style.xml中创建 custom 样式

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

    然后在布局xml文件中,添加 theme 属性,如下所示

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

    希望这有效

  • 137

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

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

    如果你把这些

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

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

  • 10

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

    android:textColorHint="#F6F6F6"
    

    或者你想要的颜色

  • 16

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

    布局:

    <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 name="GreenTextInputLayout" parent="@android:style/TextAppearance">
        <item name="android:textColor">#00FF00</item>
    </style>
    
  • 0

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

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

    在包含EditText的TextInputLayout中,添加:

    android:textColorHint="someColor"
    
  • 60

    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>
    

    在样式文件夹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>
    

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

  • 4

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

    android:textColorHint="#000000"

    <EditText
            android:id="@+id/edtEmail"
            android:textColorHint="#000000"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    
  • 4

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

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

    根据这个: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>
    

    它适用于23.1.1

  • 2

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

    android:theme="@style/com_mixpanel_android_SurveyActivityTheme"
    

    一旦我删除了这一切一切正常 .

  • 8

    try this may this help

    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();;
    
            }
        });
    
  • 10
    <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>
    

    使用textColorHint将所需的颜色设置为EditText的提示颜色 . 问题是EditText中的提示不会在你输入内容时消失,而是在EditText获得焦点时立即消失(带有很酷的动画) . 当您将焦点切换到EditText时,您会清楚地注意到这一点 .

  • 0
    <item name="colorAccent">@android:color/black</item>
    

    将colorAccent更改为主题中所需的颜色,这将更改EditText行,Cursor以及提示

    或者您也可以在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>
    

    然后在你的TextInputLayout中,你可以像这样

    <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

    迟到但它可能会帮助我这样做的人

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

    您必须在TextInputLayout上设置提示颜色 .

  • 9
    <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>``
    
  • 1

    请尝试以下代码:

    高光颜色为白色:

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

相关问题