初识EditText 自定义EditText形状

EditText继承自TextView,是程序用于和用户进行交互的另一个重要控件,它允许用户在控件里输入和编辑内容,并可以在程序中对这些内容进行处理。

使用 android:hint属性来指定了一段提示性的文本,当我们输入任何内容时,这段文本就会自动消失。

不过随着输入的内容不断增多,EditText 会被不断地拉长。这时由于 EditText 的高度指定的是 wrap_content,因此它总能包含住里面的内容,但是当输入的内容过多时,界面就会变得非常难看。我们可以使用 android:maxLines属性来解决这个问题,android:maxLines="2",这里通过 android:maxLines 指定了 EditText 的最大行数为两行,这样当输入的内容超过两行时,文本就会向上滚动,而 EditText则不会再继续拉伸。

如何在EditText中限定输入字符的方式:

1.通过设置digits属性限定输入的字符:android:digits="0123456789"

2.通过设置inputtype属性选择输入字符类型:android:inputType="number"

3.通过设置numberic属性接受数字输入:android:numeric="integer"

<EditText
            android:id="@+id/editText2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:background="@drawable/edittext_shape"
            android:digits="123450"
            android:drawableLeft="@drawable/peasy"
            android:drawablePadding="10dp"
            android:ems="10"
            android:hint="Custom EditText"
            android:inputType="phone"
            android:numeric="integer"
            android:padding="10dp"
            android:maxLines="2"
             >

 另外,还可以自定义EditText的形状,设置为圆角矩形并把背景色设为深灰色。

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

    <corners android:radius="10dp" />

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

</shape>

在EditText控件里,设置android:background="@drawable/edittext_shape

<EditText
            android:id="@+id/editText2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/edittext_shape"
            android:drawableLeft="@drawable/peasy"
            android:hint="Custom EditText"
 >

自定制的EditText运行效果:

事件处理,setOnEditorActionListener事件只有在按下回车键的时候才会被触发。

 1 public void showEditText() {
 2         editText = (EditText) findViewById(R.id.editText2);
 3         // 指定编辑行为 
 4         editText.setOnEditorActionListener(new OnEditorActionListener() {
 5 
 6             @Override
 7             public boolean onEditorAction(TextView v, int actionId,
 8                     KeyEvent event) {
 9                 // TODO Auto-generated method stub
10                 // 按下enter建才会被调用
11                 Log.i(TAG, "onEditorAction :" + actionId);
12                 return false;
13             }
14         });
15     }
原文地址:https://www.cnblogs.com/izhanjun/p/4185950.html