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" | Web编辑文本 |
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);//将焦点定为第二个字后边
}
}
启动测试: