如何在android中为EditText添加边框

时间:2017-06-18 07:12:24

标签: android android-edittext

edittext pic

嗨,我想在Android应用中添加一个文本框,就像上面的图片一样。我使用了edittext控件,但无法显示边框。

5 个答案:

答案 0 :(得分:5)

现在,正确的方法是使用具有相应样式的TextInputLayout
它不仅会绘制轮廓背景,而且还会保留漂亮的提示动画。

<com.google.android.material.textfield.TextInputLayout
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        android:hint="@string/some_hint"
        app:boxCornerRadiusBottomEnd="5dp"
        app:boxCornerRadiusBottomStart="5dp"
        app:boxCornerRadiusTopEnd="5dp"
        app:boxCornerRadiusTopStart="5dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:maxLines="1"
            tools:ignore="KeyboardInaccessibleWidget" />

    </com.google.android.material.textfield.TextInputLayout>

如果要更改线条颜色-有点棘手:

创建样式:

<style name="Til" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
      <item name="boxStrokeColor">@color/text_input_box_stroke</item>
</style>

颜色res/color/text_input_box_stroke.xml为:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--    TODO play with these around -->
    <item android:color="#0cc" android:state_focused="true"/>
    <item android:color="#fcc" android:state_hovered="true"/>
    <item android:color="#f0f"/>
</selector>

将您的新样式作为style="@style/Til"应用于TextInputLayout

别忘了向您的app / build.gradle添加依赖项:

implementation "com.google.android.material:material:1.1.0-alpha09"

答案 1 :(得分:2)

在drawable文件夹中创建一个新的xml文件edit_text_border.xml,或者根据需要为其命名,然后添加以下代码:

<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<solid
    android:color="@color/transparent"/>

<corners
    android:bottomRightRadius="12dp"
    android:bottomLeftRadius="12dp"
    android:topLeftRadius="12dp"
    android:topRightRadius="12dp"/>

<stroke
    android:color="@color/White"
    android:width="1dp"/>

将笔触颜色和半径值更改为您想要的任何值。然后在edittext中将其设置为此背景。

<EditText
android:id="@+id/edit_text"
android:background:"@drawable/edit_text_border"
/>

答案 2 :(得分:0)

你可以通过多种方式做到这一点。

您可以在xml中创建一个drawable(一个包含圆角和边框的形状项的选择器drawable) - Similar Question (and example code)

或者您可以创建9补丁图像并使用它。 (Documentation and Example

答案 3 :(得分:0)

请尝试以下代码:

  1. 在drawable文件夹中创建shape.xml文件并在其中编写以下代码:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
    
    <!-- Background Color -->
    <solid android:color="#ffffff" />
    
    <!-- Border Color -->
    <stroke android:width="1dp" android:color="#ff9900" />
    
    <!-- Round Corners -->
    <corners android:radius="5dp" />
    </shape>
    
    1. 现在,在EditText中添加android:background="@drawable/shape"
    2. ,使用此xml

答案 4 :(得分:0)

在drawable中创建xml文件 shape_border_and_background_login.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle"
    >
    <corners android:radius="25dip" />
    <solid android:color="#55ffffff">

    </solid>
    <stroke
        android:width="2dp"
        android:color="@color/white" />
</shape>

将形状文件添加到EditText背景:

 <EditText
                      android:id="@+id/edt_email"
                      android:layout_width="0dp"
                      android:layout_height="wrap_content"
                      android:layout_weight="10"
                    android:background="@drawable/shape_border_and_background_login"
                      android:inputType="textPersonName"
                      android:padding="@dimen/size15"
                      android:textSize="@dimen/size17"
                     />