如何在空的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 只需一秒钟?