当前位置: 首页 > 知识库问答 >
问题:

将TextInputLayout浮动提示颜色设置为轮廓颜色

花俊雄
2023-03-14

我正在使用MaterialComponents大纲TextInputLayout。我需要在提示文本上设置不同的颜色:

  • “Main”提示(当TextInput中没有文本时)-->带有60%alpha的黑色
  • 浮动提示-->与轮廓相同的颜色(即非活动时为colorPrimary,活动时为colorAccent)

我正在使用Android:TextColorHint设置主提示颜色,App:HintTextColor设置浮动提示颜色。唉,最后一个属性似乎只有在TextInputLayout处于活动状态时才起作用。如果它是不活动的,浮动提示采用Android:TextColorHint颜色。

我的当前配置

layout.xml

<com.google.android.material.textfield.TextInputLayout
android:id="@+id/td_descriptionH_editText"
style="@style/Widget.App.TextInputLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/td_description">

<com.google.android.material.textfield.TextInputEditText
    android:id="@+id/td_description_editText"
    style="@style/Widget.App.TextInput"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

styles.xml

<style name="Widget.App.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="android:textColorHint">@color/black_inactive</item>
    <item name="hintTextColor">?attr/drawableEditTextOutline</item>
    <item name="boxStrokeColor">?attr/drawableEditTextOutline</item>
</style>

DrawableEditTextOutline.xml

<selector>
    <item android:color="@color/colorPrimary" android:state_focused="true"/>
    <item android:color="@color/colorAccent"/>
</selector>

TextInputLayout活动正常(浮动提示与轮廓颜色相同)

TextInputLayout不活动且没有文本正常

TextInputLayout不活动,文本为KO-->浮动提示与大纲的颜色不相同

我怎样才能做到这一点呢?

共有2个答案

拓拔麒
2023-03-14

您可以使用以下内容:

<style name="CustomOutlineBox" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="boxStrokeColor">@color/text_input_layout_stroke_color</item>
    <item name="android:textColorHint">@color/text_color_hint</item>
    <item name="hintTextColor">@color/green</item>
</style>

使用@color/text_color_hint选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:alpha="..." android:color="@color/red" android:state_enabled="false"/>
    <item android:alpha="..." android:color="@color/blue"/>
</selector>

@color/text_input_layout_stroke_color选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:alpha="..." android:color="@color/green" android:state_focused="true"/>
    <item android:alpha="..." android:color="@color/green" android:state_hovered="true"/>
    <item android:alpha="..." android:color="@color/red" android:state_enabled="false"/>
    <item android:alpha="..." android:color="@color/blue"/>  <!-- unfocused -->
</selector>
隗高旻
2023-03-14

TextInputLayout必须包含textColorHint属性才能获得所需的结果

                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/txt_email"
                android:padding="5dp"
                android:textColorHint="@color/white"
                app:hintTextColor="@color/white">
 类似资料:
  • 就像外面的数百个问题一样,我想改变暗示的颜色。本来我想在评论中问另一个这样的问题(未回答),但我没有足够的声誉,所以我在这里问。 我希望当提示在TextInputEditText中时是一种颜色,当它浮动时是另一种颜色。在其他帖子中,答案总是在视图聚焦时如何更改提示。那不是我想要的,我能做到。如果编辑文本不是空的,我想更改提示颜色。我正在使用材料设计textInputLayout和TextInput

  • 我使用TextInputLayout,如果输入字段是强制性的,我希望以编程方式设置提示文本颜色和浮动标签颜色。在转到TextInputLayout之前,我使用以下方法以编程方式设置提示文本颜色 有人能指导我如何通过编程方式为TextInputLayout设置提示文本颜色和浮动标签颜色吗。

  • 我的需要是,为一个屏幕的应用程序,其中有白色的背景,并在白色的背景,我必须显示Textinputlayout提示,文本,编辑文本颜色在黑色字体。

  • 我遇到过这个奇怪的问题,在开始时,字段的颜色更改为,就像在出现时一样。而且,这种情况并不是每次都发生,只是在某些情况下才会出现。如何修复此bug?任何帮助都很感激。请参阅图片更多。这是代码 以下是样式:

  • 参考Google发布的新,如何更改浮动标签文本颜色? 在样式中设置、、没有帮助 这就是我现在拥有的:

  • 我正在使用设计库中新的。我能够让它显示和改变浮动标签的颜色。不幸的是,实际的提示现在总是白色的。 我尝试过用XML、样式和编程方式更改hintColor,还尝试过使用android。支持v7。小装置。AppCompatiEditText但是提示始终显示白色。 这是我的和 下面是我用于的样式(我尝试将属性设置为黑色,但没有为我做任何事情):