如何更改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
包装的EditText
和AutoCompleteTextView
各种样式。
对于EditText
和AppCompat 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