短視訊直播原始碼,EditText輸入框的使用

zhibo系統開發發表於2022-06-22

短視訊直播原始碼,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輸入框的使用, 更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2902158/,如需轉載,請註明出處,否則將追究法律責任。

相關文章