在android中使用hinttext颜色的选择器

时间:2017-07-27 18:58:46

标签: android android-layout android-edittext android-xml android-selector

基本上,我想在EditText属性focusablefoucsableInTouchMode设置为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时,所有代码都可以正常工作。

非常感谢任何帮助。

1 个答案:

答案 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)