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

如何更改TextInputLayout的浮动标签颜色

东门文斌
2023-03-14

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

在样式中设置ColorControlNormalColorControlActivatedColorControlHighlight没有帮助

这就是我现在拥有的:

共有1个答案

陶和歌
2023-03-14

尝试下面的代码,它在正常状态下工作

 <android.support.design.widget.TextInputLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:theme="@style/TextLabel">

     <android.support.v7.widget.AppCompatEditText
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:hint="Hiiiii"
         android:id="@+id/edit_id"/>

 </android.support.design.widget.TextInputLayout>

样式文件夹中的TextLabel代码

 <style name="TextLabel" parent="TextAppearance.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/Color Name</item> 
    <item name="android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/Color Name</item>
    <item name="colorControlNormal">@color/Color Name</item>
    <item name="colorControlActivated">@color/Color Name</item>
 </style>

设置为应用程序的主要主题,它只工作于高亮状态

 <item name="colorAccent">@color/Color Name</item>
 <item name="colorPrimary">@color/your_color</item> // Activated State
 <item name="colorOnSurface">@color/your_color</item> // Normal State
<style name="Widget.App.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="materialThemeOverlay">@style/ThemeOverlay.App.TextInputLayout</item>
    <item name="shapeAppearance">@style/ShapeAppearance.App.SmallComponent</item> //Changes the Shape Apperance
    <!--<item name="hintTextColor">?attr/colorOnSurface</item>-->   //When you added this line it will applies only one color in normal and activate state i.e colorOnSurface color
</style>

<style name="ThemeOverlay.App.TextInputLayout" parent="">
    <item name="colorPrimary">@color/colorPrimaryDark</item>  //Activated color
    <item name="colorOnSurface">@color/colorPrimary</item>    //Normal color
    <item name="colorError">@color/colorPrimary</item>        //Error color

    //Text Appearance styles
    <item name="textAppearanceSubtitle1">@style/TextAppearance.App.Subtitle1</item>
    <item name="textAppearanceCaption">@style/TextAppearance.App.Caption</item>

    <!--Note: When setting a materialThemeOverlay on a custom TextInputLayout style, don’t forget to set editTextStyle to either a @style/Widget.MaterialComponents.TextInputEditText.* style or to a custom one that inherits from that.
    The TextInputLayout styles set materialThemeOverlay that overrides editTextStyle with the specific TextInputEditText style needed. Therefore, you don’t need to specify a style tag on the edit text.-->
    <item name="editTextStyle">@style/Widget.MaterialComponents.TextInputEditText.OutlinedBox</item>
</style>

<style name="TextAppearance.App.Subtitle1" parent="TextAppearance.MaterialComponents.Subtitle1">
    <item name="fontFamily">@font/your_font</item>
    <item name="android:fontFamily">@font/your_font</item>
</style>

<style name="TextAppearance.App.Caption" parent="TextAppearance.MaterialComponents.Caption">
    <item name="fontFamily">@font/your_font</item>
    <item name="android:fontFamily">@font/your_font</item>
</style>

<style name="ShapeAppearance.App.SmallComponent" parent="ShapeAppearance.MaterialComponents.SmallComponent">
    <item name="cornerFamily">cut</item>
    <item name="cornerSize">4dp</item>
</style>

将下面的行添加到主主题中,否则可以将样式设置为xml中的textinputlayout

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

  • 我正在使用android设计库的。但无法自定义内部的提示颜色、标签颜色和下划线颜色。请帮忙。

  • 我正在使用bootstrap 5创建一个带有浮动输入的表单。下面是我使用的一个输入: 这段代码生成一个浮动输入,如下所示:浮动输入我想在选择输入时更改标签的颜色(如果可能的话,只使用css)。

  • 如果editText不为空且未聚焦,如何更改提示颜色? 这是我当前的代码: 和样式:

  • 我尝试了这个解决方案,比如在主主题中添加属性,但无法改变TextInputLayout中底线的颜色,默认情况下它采用状态栏的颜色(它可能被称为primarydark),也不想在TextInputLayout下面出现错误文本时改变底线的颜色,意思是当错误发生时改变红色,当它得到焦点时应该是那个颜色

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