Android学习分享-常见控件04-EditText详解

本节引言

一个应用基本都会需要用户输入一些信息(账号、密码等),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的常用用法做了简单地介绍,对于一些简单地需求足矣,其他用法就要根据实际需求所定,有机会会在之后添加到本文。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值