当EditText获取焦点时更改边框颜色

16

我想知道如何在EditText聚焦时更改边框颜色,目前它是这个样子的:

enter image description here

我已经尝试在SDK中查找源图片,但我无法理解它,我还尝试了使用xml,但无法仅更改边框颜色。

如果我找到源图片,我可以在Photoshop中编辑以更改颜色,请问如何做到这一点,或者源图片位于何处? :)


2
你可以使用drawable selector来为EditText显示两种不同的背景,一种是默认背景,另一种是焦点状态下的背景。这里是官方指南,详细介绍了该主题:http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList。 - Xaver Kapeller
谢谢,我会去看看! - da_st
1个回答

43
您可以为EditText创建自定义形状。
1:STATE_ENABLED用于检查ET是否已启用/禁用。
2:STATE_PRESSED用于检查ET何时被按下(它会在按下时改变颜色,但不会保持该方式)。
3:STATE_FOCUSED保持ET边框颜色更改,只要ET聚焦即可(这满足要求)。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true"
            android:state_focused="true">
        <shape android:padding="10dp" android:shape="rectangle">
            <solid android:color="#FFFFFF" />
            <stroke android:width="2dp" android:color="#ffa0a496" />
            <corners android:bottomLeftRadius="15dp" android:bottomRightRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp" />
        </shape>
    </item>
    <item android:state_enabled="true">
        <shape android:padding="10dp"
            android:shape="rectangle">
            <solid android:color="#FFFFFF" />
            <corners android:bottomLeftRadius="15dp" android:bottomRightRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp" />
        </shape>
    </item>
</selector>

并设置背景:

editText.setBackgroundResource(R.drawable.yourFile);

10
我认为应该使用"state_focused"而不是"state_pressed"。 - Nemo Jia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接