基本上,我想在EditText属性focusable
和foucsableInTouchMode
设置为false时更改提示的颜色。
这对textColor
一切都很好,但对Editext的textColorHint
属性没用。
我尽力而为,但我的代码如下:
我创建了一个名为“colorListfile”的drawable,如下所示,
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_window_focused="false"
android:state_enabled="true"
android:color="@color/colorPrimaryDark" />
<item
android:state_window_focused="false"
android:state_enabled="false"
android:color="@color/white" />
<item
android:state_focused="true"
android:color="@color/login_signup_header_textcolor" />
<item
android:color="@color/colorPrimary" />
</selector>
我的EditText如下所示,
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="zuluzulu01"
android:textColorHint="@drawable/colorListfile"
android:hint="Name" />
但是这种或任何其他方法都不起作用。但是当此属性设置为textColor
时,所有代码都可以正常工作。
非常感谢任何帮助。
答案 0 :(得分:1)
你说你想要
在EditText属性focusable和focusableInTouchMode设置为false时更改提示的颜色
您的ColorStateList
效果很好。它仅取决于state_focused
(即View
具有焦点)和state_window_focused
(即View
的窗口具有焦点)。
要确保,我刚刚使用两个EditText
进行了测试(因此EditText
可能会在用户忙于同一窗口时失去焦点),Button
(要禁用EditText
)和运行Nougat的模拟器(这样我就可以将焦点切换到另一个窗口)
不幸的是,没有选择器项属性 state_focusable 和 state_focusableInTouchMode 。(请参阅Color List Resource的文档)
因此,如果您确实希望提示颜色依赖于focusable
并将focusableInTouchMode
设置为false,则每次切换这些属性时都必须以编程方式设置所需的颜色。
myEditText.setHintTextColor(Color.GREEN)