如何更改EditText未聚焦时的边框颜色?

46

我将EditText的背景颜色改为透明。现在当没有焦点时,EditText看起来是不可见的。那么我如何更改EditText未获得焦点时的边框颜色呢?

这个XML属性是什么?

6个回答

94

创建一个XML文件,将以下内容放在drawable目录下(比如backwithborder.xml):

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#00000000" />
    <stroke android:width="1dip" android:color="#ffffff" />
</shape>

对于EditText的用户属性 android:background="@drawable/backwithborder"


11

7

虽然回答有些晚,但是我为新开发人员编写了这段代码:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true">
        <layer-list>
            <item>
                <shape android:shape="rectangle">
                    <stroke android:width="2dp" android:color="@color/components_colorPrimaryDark" />
                    <solid android:color="@color/components_white" />
                </shape>
            </item>

            <item android:bottom="2dp">
                <shape android:shape="rectangle">
                    <solid android:color="@color/components_white" />
                </shape>
            </item>
        </layer-list>
    </item>
    <item android:state_focused="false">
        <layer-list>
            <item>
                <shape android:shape="rectangle">
                    <stroke android:width="1dp" android:color="@color/components_colorAccent" />
                    <solid android:color="@color/components_white" />
                </shape>
            </item>

            <item android:bottom="1dp">
                <shape android:shape="rectangle">
                    <solid android:color="@color/components_white" />
                </shape>
            </item>
        </layer-list>
    </item>
</selector>

1
很棒的答案 @jordiz,正好满足了我的需求。 - Mihail Minkov

5

当用户在Android操作系统上聚焦于EditText时,系统会自动添加边框。边框颜色取决于操作系统的版本。有时候我们可能想要去掉默认的焦点边框,这是可以实现的。

我们可以将背景颜色设置为透明来消除EditText焦点边框。

     <EditText 
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:background="#00000000"
      />

3
问题是关于非聚焦状态,而不是聚焦状态。 - nyi

5

如果你只想改变EditText的边框颜色,可以使用属性app:backgroundTint

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:backgroundTint="#000"
/> 

2
你可以创建一个具有背景颜色的Linearlayout,其颜色应为你想要的边框颜色。然后将EditText放置在这个Linearlayout内,并给它一些背景色。 例如:如果边框是灰色,则Linearview的背景色为灰色,而EditText的背景色为黑色。
对于边框的宽度,您可以为padding属性设置“1dp”,border_width属性设置“1dp”。

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