Android开发-Android常用组件-EditText输入框

发布时间 2023-03-27 11:13:51作者: 临易

4.2  EditText(输入框)

  • EditText 输入框,继承于TextView, 也继承其属性
  • EditText 特有属性:

 

属姓名

说明

android:hint

默认提示文本

android:textColorHint

默认提示文本的颜色

 

android:selectAllOnFocus

布尔值。点击输入框获得焦点后,获取到输入框中所有的文本内容

android:inputType

对输入的数据进行限制

android:minLines

设置最小行数

 

android:maxLines

设置最大行数 PS:当输入内容超过maxline,文字会自动向上滚动!!

android:singleLine

只允许单行输入,而且不会滚动

android:textScaleX

设置字与字的水平间隔

android:textScaleY

设置字与字的垂直间隔

android:capitalize

(已弃用)

sentences仅第一个字母大写 ;words每一个单词首字母大写,用空格区分单词;characters:每一个英文字母都大写

    •   文本类型,多为大写、小写和数字符号
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"

    •   数值类型
android:inputType="number"
android:inputType="numberSigned"
android:inputType="numberDecimal"
android:inputType="phone"//拨号键盘
android:inputType="datetime"
android:inputType="date"//日期键盘
android:inputType="time"//时间键盘

  • 设置EditText获得焦点,同时弹出小键盘
edit.requestFocus(); //请求获取焦点
edit.clearFocus(); //清除焦点
  • 低版本的系统直接requestFocus就会自动弹出小键盘了稍微高一点的版本则需要我们手动地去弹键盘。
    •   第一种:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
    •   第二种:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(view,InputMethodManager.SHOW_FORCED);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //强制隐藏键盘
  • EditText光标位置的控制
setSelection();//一个参数的是设置光标位置的,两个参数的是设置起始位置与结束位置的中  间括的部分,即部分选中

示例:

edit_text.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#eeeeee"
    android:padding="10dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="40sp"
        android:text="登录界面"
        android:textColor="#000000"
        android:textSize="20sp"/>
    <!--    用户名-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:orientation="horizontal">
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:text="用户名:"
            android:textColor="#000000"
            android:textSize="19sp"/>
        <EditText
            android:id="@+id/etName"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="4"
            android:text="临易ioup"
            android:hint="请输入用户名"/>
    </LinearLayout>
    <!--    密码-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:orientation="horizontal">
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:text="密    码:"
            android:textColor="#000000"
            android:textSize="19sp"/>
        <EditText
            android:id="@+id/etPassword"
            android:layout_width="0dp"
            android:inputType="textPassword"
            android:layout_height="50dp"
            android:layout_weight="4"
            android:hint="请输入密码"/>
    </LinearLayout>
    
</LinearLayout>

MainActivity.java:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;

import android.os.Bundle;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit_text);
        EditText editName = findViewById(R.id.etName);
        editName.requestFocus();//设置一个焦点
        editName.setSelection(2);//将焦点定为第二个字后边

    }
}

 

启动测试: