ChangeTextInputLayout标题颜色

时间:2018-11-25 14:00:59

标签: android android-layout android-textinputlayout androidx mdc-components

我已将我的项目迁移到androidX并使用带有材质设计组件的新材质主题。我可以为TextInputLayout使用新的Outlined样式,当前它以白色显示标题。我尝试将样式设置为TextInputLayout

style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"

但是它以白色显示标题。

之后,我在styles.xml中创建了单独的样式

<style name="TextLabel" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="boxStrokeColor">@color/colorAccent</item>
    <item name="android:textColorHint">@color/colorAccent</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:textColorHint">@color/colorAccent</item>
    <item name="android:textColor">@color/white</item>
    <item name="colorControlNormal">@color/colorAccent</item>
    <item name="colorControlActivated">@color/colorAccent</item>
    <item name="colorControlHighlight">@color/colorAccent</item>
</style>

我将这种样式用于xml,如下所示。

<com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/pad_small"
        android:hint="Search Store"
        style="@style/TextLabel">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/et_search"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:drawableRight="@drawable/ic_search"/>
</com.google.android.material.textfield.TextInputLayout>

我正在使用的渐变导入是

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

布局如下图所示,我缺少什么?如何更改TextInputLayout标题的颜色?目前,我设置了深色背景,因此文本是可见的,但是我想使用白色背景,并且当我这样做时,标题会与背景混合在一起并且不可见。

enter image description here

2 个答案:

答案 0 :(得分:0)

尝试使用hintColor吗?在布局上?在正常情况下,这种方法不适用于材料设计 我的意思是用这种方式

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/pad_small"
    android:hintColor="#0000"
    android:hint="Search Store"
    style="@style/TextLabel">

答案 1 :(得分:0)

尝试使用

android:textColorHighlight="@color/when_focused"
android:textColorHint="@color/not_focused"

像这样更改您的styles.xml

<style name="TextLabel"parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="boxStrokeColor">@color/colorAccent</item>
    <item name="android:textColorHint">@color/colorAccent</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:textColorHighlight="@color/when_focused"</item>
 </style>

如果这不起作用,请尝试直接在XML中使用这两个

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/pad_small"
    android:textColorHighlight="@color/when_focused"
    android:textColorHint="@color/not_focused"
    android:hint="Search Store"
    style="@style/TextLabel">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/et_search"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:drawableRight="@drawable/ic_search"/>
 </com.google.android.material.textfield.TextInputLayout>