在材料设计指南中,我们可以找到以下内容: 带有图标的EditText,可在焦点上更改颜色。
是否可以使用内置设计支持库24.2.0实现此行为?是否有无缝属性来完成它,比如app:passwordToggle
属性?
请注意,使用EditText的drawableStart
或drawableLeft
属性会使图标显示在EditText的底行
并且不在材料设计guildelines上展示(参见:第一张图片)
答案 0 :(得分:4)
将两个图标设置为灰色和蓝色,并使用适当的名称替换选择器中的drawable。
创建一个选择器phone_drawable_selector.xml
,如下所示:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="false"
android:drawable="@drawable/phone_grey"
/> <!-- not focused -->
<item
android:state_focused="true"
android:drawable="@drawable/phone_blue"
/> <!-- focused -->
</selector>
使用drawableStart
的{{1}}或drawableLeft
属性作为:
EditText
答案 1 :(得分:0)
在Android小部件中处理和更新UI的最佳方法是在直接使用图像的后台实例中使用可绘制文件。
在可绘制的xml文件中,Android有一个选择器的标签,我们可以在其中获得小部件不同的状态,如按下,聚焦和默认。
供您查阅以下的XML代码。
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"
<item android:state_pressed="true" android:drawable="@android:drawable/edittext_pressed" </item> <!-- pressed -->
<item android:state_focused="true" android:drawable="@drawable/edittext_focused_blue" </item> <!-- focused -->
<item android:drawable="@android:drawable/edittext_normal" </item> <!-- default --> </selector>
使用EditText的drawableStart或drawableLeft属性:
<EditText ... android:drawableLeft="@drawable/phone_drawable_selector.xml" ...
</EditText>