如何在Android Lollipop中使用带边框的EditText

时间:2016-03-03 02:24:06

标签: android android-layout

我正在开发一款Android应用。我需要知道如何使用带边框的EditText。在Lolipop中,他们完全改变了EditText风格。我们可以不使用drawables吗?

5 个答案:

答案 0 :(得分:74)

将editTextBackground.xml写入资源中的drawable文件夹

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke
        android:width="1dp"
        android:color="@color/borderColor" />
</shape>

请勿忘记在名为borderColor的资源中声明颜色。

并将此背景分配给xml背景属性中的EditText

<EditText
    android:id="@+id/text"
    android:background="@drawable/editTextBackground"
    />

并将边框设置为EditText

更新

您可以使用style属性

更改编辑文本的边框而无需绘制
style="@style/Widget.AppCompat.EditText"

有关详细信息,请访问customize edit text

答案 1 :(得分:18)

你可以使用drawable。在drawable文件夹中创建一个可绘制的布局文件。粘贴此代码。您也可以修改它 - border.xml。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
    android:width="1dp"
    android:color="@color/divider" />
<solid
    android:color="#00FFFFFF"
    android:paddingLeft="10dp"
    android:paddingTop="10dp"/>
<padding
    android:left="10dp"
    android:top="10dp"
    android:right="10dp"
    android:bottom="10dp" />
</shape>
添加

android:background="@drawable/border"

答案 2 :(得分:5)

您可以使用xml。

创建一个xml布局并将其命名为 my_edit_text_border.xml

 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#ffffff"/>
            <corners android:radius="5dp" />
            <stroke
                android:width="2dp"
                android:color="#949494"
                />
        </shape>
    </item>
</selector>

将背景添加到Edittext

<EditText
 android:id="@+id/editText1"
 ..
 android:background="@layout/my_edit_text_border">

答案 3 :(得分:2)

为了正确的工作,你的形状应该是选择器和项目标签

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <solid android:color="#ffffff" />
            <stroke android:width="1dp"
                    android:color="@color/shape_border_active"/>
        </shape>
    </item>

</selector>

答案 4 :(得分:0)

我使用的一种快速而肮脏的解决方案是将EditText放在FrameLayout内。 EditText的边距控制边框的粗细,边框颜色由FrameLayout的背景色确定。

示例:

<FrameLayout
    android:id="@+id/frameLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#000000">

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="3dp"
        android:background="@android:color/white"
        android:ems="10"
        android:inputType="text"
        android:textSize="24sp" />
</FrameLayout>

但是,我会(大部分时间)建议使用可绘制的边框。