我的布局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来做到这一点?
创建自定义可绘制对象后,可以使用简单的选择器轻松完成此操作。
查看本教程,它将所需的内容应用于按钮。
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/drawable/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>
我认为这是可能的,您需要在可绘制文件夹中为 Edittext 创建一个选择器 xml,请查看这篇文章,他为此给出了很好的答案。
https://stackoverflow.com/a/14543476/1007087
您可以使用选择器并更改可绘制对象state_focused
<?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 应该引用以前的选择器。
希望这会有所帮助。