如何在空的edittext上更改材质TextInputLayout提示颜色?

Posted

技术标签:

【中文标题】如何在空的edittext上更改材质TextInputLayout提示颜色?【英文标题】:how to change material TextInputLayout hint color on empty edittext? 【发布时间】:2022-01-01 22:42:52 【问题描述】:

我正在尝试更改 TextInputLayout 提示颜色,以防它为空且未聚焦但我无法做到这一点,这是我的布局

<com.google.android.material.textfield.TextInputLayout
                        android:id="@+id/input_layout"
                        style="@style/text_material_input_hint_neutral_80_normal"
                        android:layout_
                        android:layout_
                        android:layout_marginStart="17dp"
                        android:layout_marginTop="26dp"
                        android:layout_marginEnd="17dp"
                        android:layout_marginBottom="24dp"
                        android:hint="@string/store_url"
                        android:textColorHint="@color/neutral_80"
                        app:boxBackgroundColor="@color/neutral_10"
                        app:boxCornerRadiusBottomEnd="8dp"
                        app:boxCornerRadiusBottomStart="8dp"
                        app:boxCornerRadiusTopEnd="8dp"
                        app:boxCornerRadiusTopStart="8dp"
                        app:boxStrokeWidth="0dp"
                        app:boxStrokeWidthFocused="0dp"
                        app:hintTextColor="@color/neutral_80"
                        app:layout_constraintBottom_toBottomOf="parent"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent">


                        <com.google.android.material.textfield.TextInputEditText
                            android:id="@+id/edittext"
                            style="@style/text_material_input_text_neutral_130_normal"
                            android:layout_
                            android:layout_
                            android:maxLines="1"
                            android:text="test string"
                            android:paddingStart="12dp"
                            android:paddingTop="24dp"
                            android:textAlignment="viewStart" />

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

这是我使用的样式

  <style name="text_material_input_hint_neutral_80_normal" parent="TextAppearance.AppCompat">
        <item name="android:textSize">12sp</item>
        <item name="android:textAllCaps">false</item>
        <item name="android:includeFontPadding">false</item>
        <item name="android:textColor">@color/neutral_80</item>
    </style>

    <style name="text_material_input_text_neutral_130_normal" parent="TextAppearance.AppCompat">
        <item name="android:textSize">14sp</item>
        <item name="android:colorAccent">@color/secondary_80</item>
        <item name="android:textAllCaps">false</item>
        <item name="android:includeFontPadding">false</item>
        <item name="android:textColor">@color/neutral_130</item>
        <item name="colorControlActivated">@color/secondary_80</item>

    </style>

我正在使用 colorControlActivated 作为类似案例的一些答案建议,还有 android:colorAccent 但这没有帮助?

如果编辑文本为空且未聚焦,如何应用不同的提示颜色?

【问题讨论】:

【参考方案1】:

调用函数的顺序真的很重要。

binding.txtLoginInputLayout.apply 
            defaultHintTextColor = ContextCompat.getColorStateList(context, R.color.blue)
            hintTextColor = ContextCompat.getColorStateList(context, R.color.red)
         

  binding.edtLoginInputLayout.apply 
            setTextColor(
                ContextCompat.getColorStateList(
                    context,
                    R.color.green
                )
            )

            highlightColor = ContextCompat.getColor(context, R.color.green_light)
        

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 不工作,你在你的答案中加入了一个自定义的 textinputlayout (ir.mservices.presentation.views.TextInputLayout) 它已修复 @Amin @Mr.King 如果输入布局中的edittext 不为空且未集中显示 defaultHintTextColor ,则此解决方案存在问题?我该如何解决这种情况? 请检查@Amin

以上是关于如何在空的edittext上更改材质TextInputLayout提示颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何在空的 HTML 输入上使用 JavaScript 处理退格事件?

如何将网格线保留在空的 TableView Javafx 中

java.lang.NullPointerException:尝试在空对象 2017 上调用虚拟方法 'android.text.Editable android.widget.EditText.ge

为啥 ToPagedList 在空的 IQueryable 上需要半分钟,而底层 SQL 只需一秒钟?

在空的 tibble 中,列类型会根据添加第一行的方式而改变

我可以在空的arraylist索引上替换或放置一个新字符串吗