如何为EditText设置自定义背景?

时间:2018-04-09 14:03:02

标签: android android-edittext

我想根据附件中的图片制作EditText。我应该使用什么方法?里面的名字( Nikk )应该是可编辑的,而且上面的名字是标题( ALIAS NAME enter image description here

1 个答案:

答案 0 :(得分:1)

我想最快的方法就是做这样的事情:

创建一个像这样的背景:

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

  <stroke
    android:width="1dp"
    android:color="#d4d4d4"
    />

  <corners android:radius="4dp"/>
</shape>

在此xml中使用它,它将作为稍后将包含的模板:

<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  >

  <EditText
    android:id="@+id/et"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:background="@drawable/border"
    android:paddingBottom="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="12dp"
    android:text="Nikk"
    android:textColor="#848484"
    android:textSize="14dp"
    />

  <TextView
    android:id="@+id/tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="22dp"
    android:layout_marginRight="22dp"
    android:background="@android:color/white"
    android:padding="2dp"
    android:textColor="#9c9c9d"
    android:text="ALIAS NAME"
    android:textSize="12dp"
    />

</FrameLayout>

TextView背景颜色应与主机布局背景颜色相同

文本大小是按目的使用dp设置的,否则您必须测量TextView高度并以编程方式设置EditText的margin_top(如果用户更改其设备中的字体大小)

然后您可以使用</include>标记在另一个xml中添加任意数量的内容:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  >

  <include
    android:id="@+id/input_1"
    layout="@layout/stam"
    />

  <include
    android:id="@+id/input_2"
    layout="@layout/stam"
    />

  <include
    android:id="@+id/input_3"
    layout="@layout/stam"
    />

  <include
    android:id="@+id/input_4"
    layout="@layout/stam"
    />

</LinearLayout>

在Java类中,您需要找到如下视图:

View input1 = findViewById( R.id.input_1 ); // the include element
EditText editText1 = (EditText) input1.findViewById( R.id.et ); // that's your EditText

更长和(更诚实)更漂亮的方法是创建一个扩展FrameLayout并以编程方式执行以下所有操作的类。因此,您将创建一个自定义布局&#39;您可以添加到您的xml文件。然后你可以添加方便的方法,它可以更加可扩展,然后使用我的建议。