以编程方式更改 TextInputLayout 提示颜色

ant*_*kas 5 user-interface android android-layout android-textinputlayout

我正在尝试以编程方式更改更改 TextInputLayout 提示颜色。虽然设置

 android:textColorHint="@color/redColor"
Run Code Online (Sandbox Code Playgroud)

在 xml 中工作得很好,我得到了这个: 并在编辑时 这就是我想要的,但我需要动态设置它

现在我 TextInputLayout 没有 setHintTextColor 方法但是 TextInputEditText 有所以我试着这样做:

editext.setHintTextColor(getColor(R.color.redColor))
Run Code Online (Sandbox Code Playgroud)

但这不适用于作为 TextInputLayout 子级的 editext,因此即使 TextInputLayout 确实支持“android:textColorHint”属性,它也不支持“setHintTextColor”方法我寻找不同的方法,我发现有人建议使用“ setHintTextAppearance" 与预定义的样式,这就是我所做的,但它给出了以下结果:

正常状态: 专注状态: 在此处输入图片说明

这是风格的样子

<style name="AppRedText" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/redColor</item>
    <item name="android:textColorHint">@color/redColor</item>
    <item name="android:textSize">12sp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

如何以编程方式实现“android:textColorHint”属性行为?

Ser*_*sak 18

我一直在寻找解决方案很长时间。不过终于找到了!结果太容易了)

科特林版本:

private fun setTextInputLayoutHintColor(textInputLayout: TextInputLayout, context: Context, @ColorRes colorIdRes: Int) {
    textInputLayout.defaultHintTextColor = ColorStateList.valueOf(ContextCompat.getColor(context, colorIdRes))
}
Run Code Online (Sandbox Code Playgroud)

最后:

setTextInputLayoutHintColor(textInputLayout, context, R.color.errorColor)
Run Code Online (Sandbox Code Playgroud)

  • 这就是我一直在寻找的解决方案! (2认同)

The*_*per 0

请检查以下链接。希望它可以帮助您提供一些想法。

[以编程方式更改 TextInputLayout 强调色