更改TextInputEditText提示文本颜色。

14

我想要改变TextInputEditText提示文本的字体颜色。无论我如何更改,似乎颜色总是与应用程序主题的主要颜色相同。

            <android.support.design.widget.TextInputLayout
                android:id="@+id/enter_template_name_edit_text_input_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColorHint="@color/warm_grey">

                <android.support.design.widget.TextInputEditText
                    android:id="@+id/template_name_text_input_edit_text"
                    style="@style/EditTextBaseStyle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="start"
                    android:hint="@string/add_nitrogen_template_name_label"
                    android:imeOptions="actionNext"
                    android:inputType="textCapWords|textNoSuggestions"
                    android:maxLines="1"
                    android:paddingBottom="@dimen/md_content_padding_bottom"
                    android:textAlignment="textStart"
                    android:textColorHint="@color/warm_grey"
                    android:textSize="32sp" />

并且这是基础样式

<style name="EditTextBaseStyle" parent="Widget.AppCompat.EditText">
    <item name="android:textViewStyle">@style/TextViewStyle</item>
    <item name="android:textColor">@color/middle_black</item>
    <item name="android:textStyle">normal</item>
    <item name="android:textSize">16sp</item>
</style>

我尝试添加了

android:textColorHint="@color/warm_grey"

我尝试将基础样式和我的AppTheme样式应用到这里,但没有帮助。

这是我的AppTheme:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/primary</item>
    <item name="android:textColorHint">@color/primary_text</item>
    <item name="android:windowBackground">@null</item>
    <item name="android:windowSoftInputMode">stateHidden|adjustPan</item>
</style>

我有什么遗漏吗?

谢谢, Otterman

编辑:当字段没有焦点时,提示文本显示正确的颜色。当字段获得焦点时,提示文本会移动到字段上方并显示错误的颜色。


1
请查看此链接 https://dev59.com/Ul0a5IYBdhLWcg3wPWpN#30914037 - Zaz Gmy
同一个问题线程中@ZazGmy提到了一个我更喜欢的较短的答案,感谢提供链接。 - CrandellWS
5个回答

30

对我来说解决方法是在TextInputLayout上设置提示和文本颜色,而不是在TextInputEditText上设置,如此处所述:https://material.io/develop/android/components/text-input-layout/

    <android.support.design.widget.TextInputLayout
        android:id="@+id/passwordTextInputLayout"
        android:hint="@string/add_nitrogen_template_name_label"
        android:textColorHint="@color/warm_grey">

        <android.support.design.widget.TextInputEditText
            android:textAppearance="@style/TextAppearance.Regular"
            android:textColor="@color/white"/>
    </android.support.design.widget.TextInputLayout>

6
您可以在布局中使用app:hintTextColorandroid:textColorHint属性:
<com.google.android.material.textfield.TextInputLayout
    app:hintTextColor="@color/mycolor"
    android:textColorHint="@color/text_input_hint_selector"
    .../>

或者您可以在自定义样式中定义它们:

<style name="..." parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
    <!-- The color of the label when it is collapsed and the text field is active -->
    <item name="hintTextColor">@color/my_color</item>

    <!-- The color of the label in all other text field states (such as resting and disabled) -->
    <item name="android:textColorHint">@color/my_selector_color</item>
</style>

5

你尝试过为你的 AppTheme 使用这些属性吗?

<item name="colorControlNormal">@color/primary</item>
<item name="colorControlHighlight">@color/warm_grey</item>      
<item name="colorControlActivated">@color/warm_grey</item>

或移动

android:textColorHint="@color/warm_grey"

从XML小部件到EditTextBaseStyle

3

试试这个:

 <style name="AppTheme.EditTextBaseStyle" parent="@android:style/TextAppearance">
    <item name="android:textColor">@android:color/darker_gray</item>
</style>

3
我成功地做到了这一点,通过添加代码实现。
app:hintTextAppearance="@style/EditTextHintStyle"

对于我的TextInputLayout来说,这是正确的样式:

<style name="EditTextHintStyle" parent="EditTextBaseStyle">
    <item name="android:textColor">@color/warm_grey</item>
</style>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接