将 android 支持库升级到 28.0.0 后 TextInputLayout 提示颜色不变
Posted
技术标签:
【中文标题】将 android 支持库升级到 28.0.0 后 TextInputLayout 提示颜色不变【英文标题】:TextInputLayout hint color not changing after upgrading android support library to 28.0.0 【发布时间】:2019-05-31 13:00:38 【问题描述】:将项目中的android支持库升级到28.0.0后,无法更改自定义TextInput的提示颜色
我尝试通过使用取决于状态的可绘制对象来更改颜色,更改 textColor 属性,更改 textColorHint 属性...它们都不起作用,但如果更改其他提示属性,例如文本大小,它会起作用。
只有在EditText不可编辑时才会出现这种情况
我目前的提示风格:
<style name="TextInputHint" parent="@android:style/TextAppearance">
<item name="android:textColor">@drawable/textinput_hint_color</item>
<item name="android:textSize">@dimen/textSize14</item>
<item name="android:gravity">top</item>
<item name="android:maxLines">4</item>
<item name="android:inputType">textMultiLine</item>
<item name="android:scrollbars">vertical</item>
</style>
还有可绘制的
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/northTexasGreen" android:state_focused="true"/>
<item android:color="@color/lightSlateGray" android:state_focused="false"/>
</selector>
【问题讨论】:
如何在 TextInputLayout 上设置这个? @EugenPechanec 我在我的自定义 TextInput 类中使用setHintAppearance
方法来设置它
【参考方案1】:
以下代码适用于 28.0.0
<android.support.design.widget.TextInputLayout
android:layout_
android:layout_
app:hintTextAppearance="@style/TextInputHint">
<EditText
android:layout_
android:layout_
android:hint="Checking hint color"
android:padding="10dp"
android:textSize="14sp" />
</android.support.design.widget.TextInputLayout>
<style name="TextInputHint" parent="@android:style/TextAppearance">
<item name="android:textColor">@drawable/textinput_hint_color</item>
<item name="android:textSize">@dimen/textSize14</item>
<item name="android:gravity">top</item>
<item name="android:maxLines">4</item>
<item name="android:inputType">textMultiLine</item>
<item name="android:scrollbars">vertical</item>
</style>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/northTexasGreen" android:state_focused="true"/>
<item android:color="@color/lightSlateGray" android:state_focused="false"/>
</selector>
【讨论】:
我是这样设置的,但是当我把EditText的focusable属性设置为false时,颜色不是我想要的 如果将 focusable 设置为 false,颜色将永远无法切换到可聚焦状态。如果可以满足您的需要,请尝试将 editable 设置为 false。 这不是问题,调试代码我看到它在内部正确地改变了提示的颜色,但它仍然显示为好像它被禁用了以上是关于将 android 支持库升级到 28.0.0 后 TextInputLayout 提示颜色不变的主要内容,如果未能解决你的问题,请参考以下文章
错误记录Android Studio 编译时 Kotlin 代码编译报错 ( 升级支持库时处理 @NonNull 参数 )