参考谷歌发布的新TextInputLayout,如何更改浮动标签文本颜色?

在样式中设置colorControlNormal, colorControlActivated, colorControlHighLight没有帮助。

这是我现在拥有的:


当前回答

从文档中可以看到:

提示应该设置在TextInputLayout上,而不是EditText上。如果在XML中的子EditText上指定了提示,TextInputLayout可能仍然正确工作;TextInputLayout将使用EditText的提示作为浮动标签。但是,将来修改提示的调用将不会更新TextInputLayout的提示。为了避免意外的行为,在TextInputLayout上调用setHint(CharSequence)和getHint(),而不是在EditText上。

所以我设置android:hint和app:hintTextColor在TextInputLayout,而不是在TextInputEditText和它工作。

其他回答

如果你使用com.google.android.material.textfield,可以使用app:hintTextColor。TextInputLayout,试试这个

 <com.google.android.material.textfield.TextInputLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:hint="@string/app_name" 
     app:hintTextColor="@android:color/white">                   

     <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
 </com.google.android.material.textfield.TextInputLayout>

我如何改变浮动标签文本颜色?

使用材质组件库,您可以自定义TextInputLayout提示文本颜色使用(它需要版本1.1.0)

在布局中: app:hintTextColor属性:标签折叠和文本字段激活时的颜色 android:textColorHint属性:标签的颜色在所有其他文本字段的状态(如休息和禁用)

<com.google.android.material.textfield.TextInputLayout
     app:hintTextColor="@color/mycolor"
     android:textColorHint="@color/text_input_hint_selector"
     .../>

扩展材质样式Widget.MaterialComponents.TextInputLayout.*:

<style name="MyFilledBox" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
    <item name="hintTextColor">@color/mycolor</item>
    <item name="android:textColorHint">@color/text_input_hint_selector</item>
</style>

android:textColorHint的默认选择器是:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:alpha="0.38" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
  <item android:alpha="0.6" android:color="?attr/colorOnSurface"/>
</selector>

我建议你为TextInputLayout做风格主题,只改变强调色。设置父主题为你的应用程序基础主题:

 <style name="MyTextInputLayout" parent="MyAppThemeBase">
     <item name="colorAccent">@color/colorPrimary</item>
 </style>

 <android.support.design.widget.TextInputLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:theme="@style/MyTextInputLayout">

在最新版本的支持库(23.0.0+)中,TextInputLayout采用以下XML属性来编辑浮动标签颜色:

现在,简单地使用colorAccent和colorPrimary就可以完美地工作了。