在焦点上更改EditText的图标颜色

时间:2016-09-20 08:03:19

标签: android material-design android-design-library

在材料设计指南中,我们可以找到以下内容: enter image description here 带有图标的EditText,可在焦点上更改颜色。

是否可以使用内置设计支持库24.2.0实现此行为?是否有无缝属性来完成它,比如app:passwordToggle属性?

请注意,使用EditText的drawableStartdrawableLeft属性会使图标显示在EditText的底行

enter image description here

并且不在材料设计guildelines上展示(参见:第一张图片)

2 个答案:

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