本节引言
一个应用基本都会需要用户输入一些信息(账号、密码等),Android App中接收用户输入的控件就是EditText,本章主要讲解关于EditText的实际应用。
1.基本用法
我们先看看EditText的长什么样子吧:
可以看到,EditText被点击之后会弹出输入法,之后就可以输入信息了。
代码也很简单,只需要在xml布局文件中写一个EditText节点就Ok了,如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.liu.edittextdemo.MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</RelativeLayout>
2.实用用法
1. 获得EditText的输入信息
获取EditText输入信息很简单,调用EditText的getText方法即可,但是它返回的是一个Editable对象,所以常常需要将它转换成String对象。
下面我们通过一个例子演示这个用法,先向EditText中输入信息,点击按钮获取输入内容,将其在TextView中展示,具体看下图:
xml代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.liu.edittextdemo.MainActivity">
<EditText
android:id="@+id/et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/et"
android:layout_margin="16dp"
android:text="获取EditText的输入内容"/>
<TextView
android:id="@+id/tv"
android:layout_below="@id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
Activity代码:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private EditText editText;
private Button button;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
setListener();
}
private void initView() {
editText= (EditText) findViewById(R.id.et);
button= (Button) findViewById(R.id.btn);
textView= (TextView) findViewById(R.id.tv);
}
private void setListener() {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String content=editText.getText().toString();
textView.setText(content);
}
});
}
}
2.设置EditText的提示文本
如果单单只是一个EditText的话,我们并不知道需要输入何种信息,所以就经常需要设置提示文本,使用方式很简单只需要使用以下两个属性:
android:hint:提示文本
android:textColorHint:提示文本的颜色
演示图片如下:
提示文本会出现EditText中,当输入了内容之后,提示文本就会消失。
3.限制EditText的输入类型
有时候我们需要对EditText输入内容进行限制,比如当我们需要输入密码时,输入汉字的话显然是不符合的,而android:inputType就能简单的实现这个功能。
我们将android:inputType的值设为phone,点击EditText输入法就会默认弹出拨号的界面,也不可以输入字母等字符,演示效果如下图:
以下是android:inputType的可取值:
android:inputType="number"//数字
android:inputType="numberSigned"
android:inputType="numberDecimal"
android:inputType="phone"//拨号键盘
android:inputType="datetime"
android:inputType="date"//日期键盘
android:inputType="time"//时间键盘
android:inputType="none"
android:inputType="text"
android:inputType="textCapCharacters"
android:inputType="textCapWords"
android:inputType="textCapSentences"
android:inputType="textAutoCorrect"
android:inputType="textAutoComplete"
android:inputType="textMultiLine"
android:inputType="textImeMultiLine"
android:inputType="textNoSuggestions"
android:inputType="textUri"
android:inputType="textEmailAddress"
android:inputType="textEmailSubject"
android:inputType="textShortMessage"
android:inputType="textLongMessage"
android:inputType="textPersonName"
android:inputType="textPostalAddress"
android:inputType="textPassword"
android:inputType="textVisiblePassword"
android:inputType="textWebEditText"
android:inputType="textFilter"
android:inputType="textPhonetic"
4.修改EditText的样式
EditText默认的样式一般不会满足UI的需求,所以就需要我们自定义EditText的样式了。其实修改EditText样式原理很简单,就是修改EdiitTxet的background,而我们可以用一个图片或shape充当背景。通过一个shape来修改样式,效果图如下:
我们需要写一个shape文件(bg_edittext_normal.xml),代码如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
<corners android:radius="5dip"/>
<stroke
android:width="1dip"
android:color="#BDC7D8" />
</shape>
然后将EditText的background属性引用这个shape文件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext_normal"
android:padding="5dp"
android:textSize="16dp"
android:layout_margin="10dp"
android:hint="请输入"
/>
</LinearLayout>
本章小结
本篇对EditText的常用用法做了简单地介绍,对于一些简单地需求足矣,其他用法就要根据实际需求所定,有机会会在之后添加到本文。