如何在TextInputlayout中设置提示的颜色?

时间:2017-11-29 07:01:38

标签: android android-textinputlayout

我想更改文本输入布局的提示颜色及其关联的编辑文本颜色。我尝试使用app:hintTextAppearance =“@ color / black”

 <android.support.design.widget.TextInputLayout
                        android:id="@+id/input_layout_edit_contact_name"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:textColor="@color/black"
                        android:textColorHighlight="@color/black"
                        app:hintTextAppearance="@color/black"
                        app:errorTextAppearance="@style/EmailErrorAppearance">

                        <EditText
                            android:id="@+id/et_input_edit_contact_name"
                            android:hint="@string/hint_name_add"
                            android:inputType="textEmailAddress"
                            android:textColor="@android:color/black"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                           />

我的style.xml是。

   <resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="colorControlNormal">#FFFFFF</item>
        <item name="colorControlActivated">#FFFFFF</item>
        <item name="android:textColorHint">@color/black</item>
    </style>

 </resources>

当我将 #FFFFFF 更改为  #000000 它会在应用程序的所有Textinputlayout中显示黑色提示。

我的需求是,对于具有白色背景的应用程序的一个屏幕,并且在白色背景上,我必须显示Textinputlayout提示,文本,编辑黑色字体的文本颜色。

2 个答案:

答案 0 :(得分:0)

跟着它 -

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

style.xml -

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

答案 1 :(得分:0)

首先不要以您的父样式指定该属性。因为如果这样做,它将带走整个应用程序的属性。不用那样做,而是为TextInputLayout创建不同的样式。

与Android支持库一起使用的TextInputLayout不会再给您带来预期的输出。因此,您应该将项目迁移到AndroidX,并使用Material Components库。

将该库添加到您的应用模块级gradle文件中。

implementation 'com.google.android.material:material:1.1.0-alpha07'

在这里看到以下内容

<style name="TextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
        <item name="boxBackgroundMode">outline</item>
        <item name="boxStrokeColor">@android:color/black</item>
        <item name="android:textColorHint">@android:color/black</item>
        <item name="hintTextColor">@android:color/white</item>
    </style>

此处android:textColorHint属性将处理editTextField的提示颜色,而hintTextColor属性将处理浮动文本标签的提示颜色。

创建样式后,将其分配给TextInutLayout。如果您不希望在下一页上使用此样式,则不要分配style属性。

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

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

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


这将为您提供预期的输出。

有关更多信息,请阅读此处的文档

https://material.io/develop/android/components/text-input-layout/

他们已经指定了可用于TextInputLayout的所有属性。