短视频直播源码,EditText输入框的使用

短视频直播源码,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)
 
    }
}

以上就是短视频直播源码,EditText输入框的使用, 更多内容欢迎关注之后的文章

猜你喜欢

转载自blog.csdn.net/yb1314111/article/details/125408099
今日推荐