当字段获得焦点时更改drawable

时间:2016-02-07 12:22:08

标签: android

我的布局xml中有几个EditText字段。所有这些都遵循这种模式:

<EditText
    style="@style/EditText"
    android:id="@+id/email"
    android:hint="Email Address"
    android:inputType="textEmailAddress"
    android:drawableEnd="@drawable/icon1" />

如果此字段获得焦点,我想将drawableIcon设置为icon1,如果它失去焦点,我想将其设置为icon2

我知道我可以在我的活动中使用setOnFocusChangeListener来做到这一点。

但我想问是否可以仅使用XML

3 个答案:

答案 0 :(得分:6)

创建自定义绘图后,可以使用简单的选择器轻松完成。

查看本教程,它将您想要的内容应用于按钮。

http://www.mkyong.com/android/android-imagebutton-selector-example/

这样的事情对你有用:

<EditText
    style="@style/EditText"
    android:id="@+id/email"
    android:hint="Email Address"
    android:inputType="textEmailAddress"
    android:background ="@drawable/customDrawableIcon" />

RES /抽拉/ customDrawableIcon.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/icon1"
          android:state_focused="true" />
    <item android:drawable="@drawable/icon2"
          android:state_focused="false" />
</selector>

答案 1 :(得分:2)

我认为有可能,您需要在drawable文件夹中为Edittext创建一个选择器xml,查看这篇文章他给出了一个很好的答案。

https://stackoverflow.com/a/14543476/1007087

答案 2 :(得分:2)

您可以使用选择器并更改state_focused drawable

    <?xml version="1.0" encoding="utf-8"?>
     <selector xmlns:android="http://schemas.android.com/apk/res/android" >
      <item android:state_focused="true" android:drawable="@drawable/focusedIcon"/>
      <item android:drawable="@drawable/normalicon"/>
    </selector>

所以现在android:drawableEnd应该引用前一个选择器。

希望这会有所帮助。