EditText输入框
EditText是Android的文本输入框,用于输入和修改文本的用户界面元素。EditText继承于TextView,所以TextView上的大部分方法和属性也适用于EditText。
使用EditText
使用输入框特别简单,只需要在布局中加入<EditText/>
标签即可,其中宽高属性是必须的。另外id、hint、inputType等属性也建议要有。
-
android:id
:设置控件的id 用于java代码中找到该控件 -
android:layout_width
: 控件的宽度 常用值 match_parent(填充父容器) wrap_content(包裹内容) -
android:layout_height
: 控件的高度 常用值 match_parent(填充父容器) wrap_content(包裹内容) -
android:hint
:输入框的提示文本(大家最常见的 请输入关键字...) -
android:textColorHint
:提示文本的颜色 -
android:autofillHints
:针对自动填充提供服务
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名"
android:inputType="text"
android:autofillHints="username"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
效果预览图:
EditText上面的示例是一个居中的EditText输入框,默认样式为一个带下划线的文本,点击输入框获取焦点后会自动弹出输入法键盘。
输入类型
EditText设置输入类型(inputType属性)可以验证部分数据,系统可以根据输入类型弹出合适的输入框,比如数字、密码、常规文本等。
-
android:inputType
:输入框输入的内容(文本、数字、密码等)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名,字母或数字"
android:inputType="text|number"
android:autofillHints="username"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autofillHints="password"
android:hint="请输入密码,仅数字"
android:inputType="numberPassword"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText" />
</androidx.constraintlayout.widget.ConstraintLayout>
案例演示:
inputType输入类型的值有很多,上面只是举了text和numberPassword两个例子。
美化EditText
默认的EditText样式实在是太不怎么样,我们可以通过设置background属性为drawable资源进行EditText样式美化。
-
android:background
:控件背景颜色、图像 -
android:backgroundTint
:控件背景色调 -
android:layout_marginXx
:控件外边距 -
android:paddingXx
:控件内边距
用一下前面用过的边框drawable
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 实心 -->
<solid android:color="#FFFFFF"/>
<!-- 边框 -->
<stroke
android:width="1dp"
android:color="#FF00FF"/>
<!-- 圆角 -->
<corners android:radius="3dp"/>
<!-- 边距 -->
<padding
android:top="2dp"
android:bottom="2dp"
android:left="6dp"
android:right="6dp"/>
</shape>
EditText的background属性值设置为上面的drawable文件就实现了边框背景。
效果预览图:
background颜色不太清晰,但还是有效果的。其它样式属性也可以尝试,主要要为了美化EditText,怎么觉得好看怎么来。
EditText其它属性
控件EditText属性很多,除了以上的,还经常用到以下一些属性:
-
android:selectAllOnFocus
:获得焦点全选 -
android:gravity
:文本对齐方式 -
android:minLines="2"
:最少行数(文本不够会垂直居中显示) -
android:maxLines="3"
:最多行数(文本超出会产生纵向滚动)
直接在EditText标签添加属性即可,效果演示如下:
selectAllOnFocus本文简单的介绍了几个EditText的属性,更多关于EditText的属性和方法可以参考官方文档EditText。