如何更改TextinputLayout标签的颜色和edittext下划线android

我正在使用androiddevise库的TextinputLayout 。 但是不能自定义TextinputLayout的提示颜色,标签颜色和EditText的下划线颜色。 请帮忙。

要改变底线的颜色,你可以在你的应用主题中使用它:

 <item name="colorControlNormal">#c5c5c5</item> <item name="colorControlActivated">@color/accent</item> <item name="colorControlHighlight">@color/accent</item> 

有关更多信息,请检查此线程 。

要更改浮动标签颜色

 <style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance"> <item name="android:textColor">@color/main_color</item> 

并使用它像:

  <android.support.design.widget.TextInputLayout ... app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout" > 

更新:
像下面一样使用它,如果你想改变提示颜色,当它不是一个浮动标签:

 <android.support.design.widget.TextInputLayout ... app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout" android:textColorHint="#c1c2c4"> 

感谢@AlbAtNf

基于Fedor Kazakov和其他人的答案,我创build了一个默认configuration。

styles.xml

 <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="Widget.Design.TextInputLayout" parent="AppTheme"> <item name="hintTextAppearance">@style/AppTheme.TextFloatLabelAppearance</item> <item name="errorTextAppearance">@style/AppTheme.TextErrorAppearance</item> <item name="counterTextAppearance">@style/TextAppearance.Design.Counter</item> <item name="counterOverflowTextAppearance">@style/TextAppearance.Design.Counter.Overflow</item> </style> <style name="AppTheme.TextFloatLabelAppearance" parent="TextAppearance.Design.Hint"> <!-- Floating label appearance here --> <item name="android:textColor">@color/colorAccent</item> <item name="android:textSize">20sp</item> </style> <style name="AppTheme.TextErrorAppearance" parent="TextAppearance.Design.Error"> <!-- Error message appearance here --> <item name="android:textColor">#ff0000</item> <item name="android:textSize">20sp</item> </style> </resources> 

activity_layout.xml

 <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.AppCompatEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Text hint here" android:text="5,2" /> </android.support.design.widget.TextInputLayout> 

聚焦:

重点

没有重点:

没有焦点

错误信息:

在这里输入图像说明

本博客文章描述了由TextInputLayout包装的EditTextAutoCompleteTextView各种样式。

对于EditTextAppCompat lib 22.1.0以上版本,您可以使用一些主题相关的设置来设置主题属性:

 <style name="StyledTilEditTextTheme"> <item name="android:imeOptions">actionNext</item> <item name="android:singleLine">true</item> <item name="colorControlNormal">@color/greyLight</item> <item name="colorControlActivated">@color/blue</item> <item name="android:textColorPrimary">@color/blue</item> <item name="android:textSize">@dimen/styledtil_edit_text_size</item> </style> <style name="StyledTilEditText"> <item name="android:theme">@style/StyledTilEditTextTheme</item> <item name="android:paddingTop">4dp</item> </style> 

并将其应用于EditText

 <EditText android:id="@+id/etEditText" style="@style/StyledTilEditText" 

对于AutoCompleteTextView事情更复杂,因为将它包装在TextInputLayout并应用此主题会打破浮动标签行为。 你需要在代码中解决这个问题:

 private void setStyleForTextForAutoComplete(int color) { Drawable wrappedDrawable = DrawableCompat.wrap(autoCompleteTextView.getBackground()); DrawableCompat.setTint(wrappedDrawable, color); autoCompleteTextView.setBackgroundDrawable(wrappedDrawable); } 

并在Activity.onCreate

 setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight)); autoCompleteTextView.setOnFocusChangeListener((v, hasFocus) -> { if(hasFocus) { setStyleForTextForAutoComplete(getResources().getColor(R.color.blue)); } else { if(autoCompleteTextView.getText().length() == 0) { setStyleForTextForAutoComplete(getResources().getColor(R.color.greyLight)); } } }); 
 <style name="Widget.Design.TextInputLayout" parent="android:Widget"> <item name="hintTextAppearance">@style/TextAppearance.Design.Hint</item> <item name="errorTextAppearance">@style/TextAppearance.Design.Error</item> </style> 

您可以覆盖此布局的样式

而且你也可以改变内部的EditText-item风格。

如果要更改TextInputLayout条形图/线条颜色和提示文本颜色 (通常是重音颜色),则只需创build以下样式:

 <style name="MyStyle"> <item name="colorAccent">@color/your_color</item> </style> 

然后将其应用到您的TextInputLayout作为主题

 <android.support.design.widget.TextInputLayout ... app:theme="@style/MyStyle" /> 

这基本上将一个主题 (而不是风格)设置为一个视图(而不是整个活动)。

在Edittext标签中添加此属性并享受:

  android:backgroundTint="@color/colorWhite" 
 <style name="EditScreenTextInputLayoutStyle" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorControlNormal">@color/actionBar_background</item> <item name="colorControlActivated">@color/actionBar_background</item> <item name="colorControlHighlight">@color/actionBar_background</item> <item name="colorAccent">@color/actionBar_background</item> <item name="android:textColorHint">@color/actionBar_background</item> </style> 

将此样式应用于TextInputLayout