我是靠谱客的博主 神勇小兔子,最近开发中收集的这篇文章主要介绍Android EditText输入框的使用(很详细很基础)一、基础属性二、状态监听,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

关于Android手机的各类输入框,在编辑多行文本,文本块,统一使用的是 EditText,这也是我们使用的最多的常用控件之一,在此做一个简单的总结。

一、基础属性

首先,EditText作为一个控件,他是继承于View的,所以他具有View的很多属性及方法。当然,现在出了个AppCompatEditText,它是继承于EditText的,加了一些外观的处理,其余的用法那些一模一样。

在写Xml界面时,我们可以通过Android:,tools:,自定义属性等等为其定义各种属性。这些属性可以确定他的宽高,行数,输入限制等等,常见的用法如下:


<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/login_email_edit" //控件id
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginHorizontal="3dp"//水平外边距
android:inputType="textEmailAddress"//输入类型限制为邮箱,所以你的输入法的很多特殊字符跟不输入不了哈
android:cursorVisible="true"//光标显示控制
android:ellipsize = “end” //省略号在结尾,也可在开始,或者跑马灯等等,这个是内容过长后的处理方式
android:marqueeRepeatLimit=”marquee_forever” //设置跑马灯循环次数为永远,也可以直接输入次数
android:textIsSelectable="true"//文本是否可被选中
android:textStyle="bold"//文本风格:加粗
android:paddingStart="16dp"//左内边距
android:maxLines="1"//最大行数
android:selectAllOnFocus = “true"//获得焦点后全选组件内所有文本内容,比如更换账号
android:digits="QWERTYUIOPASDFGHJKLZXCVBNM1234567890"//输入限制
android:hint="@string/input_email" //提示,当输入内容后消息
android:textColorHint="@color/white"//提示文本颜色
android:background="@drawable/rgb32363b_r8"//背景
android:textColor="@color/white"//输入文本颜色
android:textCursorDrawable="@drawable/green"//设置光标资源
android:layout_marginTop="45dp"
android:textSize="16sp"//文本尺寸
android:gravity="center_vertical"//内容垂直方向居中
android:drawbleStart="@drawable/we_chat"//控件开始位置加一个图标
app:layout_constraintStart_toStartOf="parent"//这个是约束布局的约束条件,不用管
app:layout_constraintTop_toBottomOf="@id/login_email_title_tv"
/>

上边是输入框/编辑栏常用的一些属性,还有一些其他的,不咋用,就不深究了。

二、状态监听

为了良好的交互和用户体验,我们在做功能时需要对输入框又一些状态上的监听才能更好的把一些信息反馈给用户。比如登录时的,错误提示,选中时的颜色改变等等,常用的一些方法如下:

1.内容编辑的监听:当我们需要实时对内容进行监听:比如内容为空/格式不对时,登录按钮置灰不可点击。

emailEdit.addTextChangedListener(object : TextWatcher {
// charSequence为在你按键之前显示的字符串
p1为新字符串与charSequence开始出现差异的下标
//p2表示原字符串的count个字符
p3表示将会被after个字符替换
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
// 按键之前字符串的p1位置的p2个字符已经被p3个字符替换形成新字符串charSequence
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
if (!p0.isNullOrEmpty()) {
isEmailEmpty = false //是否为空
}
//在这里面可以对内容做字数的判定等等,比如文本框的右下角一般都会有一个到达一定
//字数就不可输入,字体颜色变化等等
}
// afterTextChanged中 p0为EditText显示的内容
override fun afterTextChanged(p0: Editable?) {
isRight = CheckEditFormat.checkEditInput(p0.toString())
loginTv.isEnabled = !isEmailEmpty && !isPasswordEmpty //登录按钮是否可
以点击,也可以在这里动态更改该控件或者其他控件的背景,颜色等等
}
})
//判断输入是否为邮箱格式
fun checkEditInput(string: String?): Boolean {
val pattern = Pattern.compile("[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}")
return ((string?.length ?: 0) > 0) && pattern.matcher(string ?: "").matches()
}

2.是否聚焦监听:选中更改背景,内容处理等等


emailEdit.setOnFocusChangeListener { view, b ->
if (b) {
view.setBackgroundResource(R.drawable.rgb32363b_strokeef7300_r8)//选中为黄色边框
}else{
view.setBackgroundResource(R.drawable.rgb32363b_r8)//未选中为灰色边框
}
}

3.进入界面聚焦状态自动呼起软键盘

object KeyboardUtils {
/**
* 弹起软键盘
* @param editText
*/
fun openKeyBoard(editText: View, context: Context) {
editText.isFocusable = true
editText.isFocusableInTouchMode = true;
editText.requestFocus();
val timer = Timer();
timer.schedule(object : TimerTask() {
override fun run() {
val imm: InputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(editText, 0)
}
}, 200)
}
}

好像平时用的也就这些,以后遇到再补充,如果有地方写错了,写的不好,欢迎指正

最后

以上就是神勇小兔子为你收集整理的Android EditText输入框的使用(很详细很基础)一、基础属性二、状态监听的全部内容,希望文章能够帮你解决Android EditText输入框的使用(很详细很基础)一、基础属性二、状态监听所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部