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

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

这是我现在拥有的:


当前回答

如果你使用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>

其他回答

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

<com.google.android.material.textfield.TextInputLayout
    android:hint="Hint"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/TextInputLayoutHint">

    <androidx.appcompat.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:maxLines="1"
        android:paddingTop="@dimen/_5sdp"
        android:paddingBottom="@dimen/_5sdp"
        android:textColor="#000000"
        android:textColorHint="#959aa6" />

</com.google.android.material.textfield.TextInputLayout>

res /价值/ styles.xml

<style name="TextInputLayoutHint" parent="">
    <item name="android:textColorHint">#545454</item>
    <item name="colorControlActivated">#2dbc99</item>
    <item name="android:textSize">11sp</item>
</style>

有太多复杂的解决方案。下面是一个改变浮动标签颜色的程序。

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

除了更改其他属性:

更改框描边颜色:

<com.google.android.material.textfield.TextInputLayout
    app:boxStrokeColor="@color/green"

更改方框描边宽度:

<com.google.android.material.textfield.TextInputLayout 
     app:boxStrokeWidth="1.5dp"

更改编辑TextInputEditText提示颜色:

<com.google.android.material.textfield.TextInputEditText
     android:textColorHint="@color/white"

更改TextInputEditText的颜色:

<com.google.android.material.textfield.TextInputEditText           
            android:textColor="@color/white" />

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

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