【问题标题】:How to have EditText with border in Android Lollipop如何在 Android Lollipop 中使用带有边框的 EditText
【发布时间】:2016-03-03 02:24:06
【问题描述】:

我正在开发一个 Android 应用程序。我需要知道我们如何才能拥有一个带边框的 EditText。在 Lolipop 中,他们完全改变了 EditText 样式。我们可以不使用drawables吗?

【问题讨论】:

标签: android android-layout


【解决方案1】:

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

<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 属性更改不带drawable 的编辑文本的边框

style="@style/Widget.AppCompat.EditText"

更多详情请访问customize edit text

【讨论】:

  • >不使用drawables
  • style="@style/Widget.AppCompat.EditText" 对我不起作用。
【解决方案2】:

您可以使用可绘制对象。在您的可绘制文件夹中创建可绘制布局文件。粘贴此代码。你也可以修改它-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>

在您的 EditText 视图中,添加

android:background="@drawable/border"

【讨论】:

  • >不使用drawables
【解决方案3】:

您可以使用 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">

【讨论】:

    【解决方案4】:

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

    <?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>
    

    【讨论】:

      【解决方案5】:

      我使用的一个快速而肮脏的解决方案是将 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>
      

      但我会推荐,而且我大部分时间都会推荐用于边框的可绘制对象。 Elite's 答案是在这种情况下我会选择的答案。

      【讨论】:

        猜你喜欢
        • 2017-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-29
        • 2016-10-17
        • 2015-06-10
        • 2018-05-04
        • 1970-01-01
        相关资源
        最近更新 更多