视频直播系统源码,EditText输入框的使用
为了良好的交互和用户体验,我们在做功能时需要对输入框又一些状态上的监听才能更好的把一些信息反馈给用户。比如登录时的,错误提示,选中时的颜色改变等等,常用的一些方法如下:
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)
}
}
以上就是 视频直播系统源码,EditText输入框的使用,更多内容欢迎关注之后的文章
标签:p0,Int,EditText,输入框,源码,editText,fun From: https://www.cnblogs.com/yunbaomengnan/p/17823978.html