使用TextInputLayout时更改EditText提示颜色

我正在使用devise库中的新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> 

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

资源

在style.xml中创build自定义样式

 <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文件中添加如下的主题属性

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

希望这个作品

有同样的问题。 将这些行放在主题中解决。

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

在一个单独的风格,并将其应用于TextInputLayoutEdittext它不会出现。 你必须把它放在应用程序的父主题中。

将textColorHint属性添加到您的编辑文本

 android:textColorHint="#F6F6F6" 

或任何你想要的颜色

我不确定是什么原因导致你的问题把这个代码完美的为我工作。 我认为这与使用正确的xml命名空间( xmlns )有关。 我不知道是否支持使用android.support.design没有XML名称空间属性。 或者它与您在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> 

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

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

在保存EditText的TextInputLayout中,添加:

 android:textColorHint="someColor" 

android:textColorHint =“#FFFFFF”有时候工作,有时不。 对于我来说下面的解决scheme完美的作品

尝试下面的代码它的作品在你的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> 

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

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

试试这可能会有所帮助

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

很多答案,但只需要一条线:

机器人:textColorHint = “#000000”

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

看起来像父视图有一个第三方库的风格,导致EditText是白色的。

 android:theme="@style/com_mixpanel_android_SurveyActivityTheme" 

一旦我删除这一切工作正常。

  <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获得焦点(与一个很酷的animation)。 当您将焦点切换到EditText时,您会清楚地注意到这一点。

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

您可以在TextInputlayout中使用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> 

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