iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
0

關於輸入完資料跳到下一個元件取得焦點形成看似自動輸入的作法有很多。像是利用輸入鍵盤跳至下一個元件。

  • android:nextFocusDown
  • android:nextFocusForward
  • android:nextFocusUp
  • android:nextFocusRight
  • android:nextFocusLeft

但是當我們不想按完值後再點選鍵盤的下一個按鍵作焦點切換的話,
可以試試使用requestFocus()方法來實作

先上程式碼

private fun setNextFocus( nowEdit : EditText,  nextEdit:EditText){
    nowEdit.addTextChangedListener(object : TextWatcher {
        override fun afterTextChanged(s: Editable?) {}
        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
            if(nowEdit.getText().toString().length==1)     
            {
                nextEdit.requestFocus()
            }
        }
    })
}

透過宣告一個addTextChangedListener事件,我們在onTextChanged中實作requestFocus()。

在這個程式中,我們為兩個EditView元件定義了輸入後跳轉的來源以及目標。

所以實際上使用時,就會像下列的用法

setNextFocus(verifyeditText1,verifyeditText2)
setNextFocus(verifyeditText2,verifyeditText3)
setNextFocus(verifyeditText3,verifyeditText4)
setNextFocus(verifyeditText4,verifyeditText5)
setNextFocus(verifyeditText5,verifyeditText6)

定義完成後,輸入完一個字元就會馬上跳至下一個EditView元件取得焦點。


上一篇
畫面滑動時固定在指定物件上 - Collapsing
下一篇
將字串運算式轉成運算結果
系列文
跟Kotlin一起來聊Android元件 或許還有應用,或許還有一些資訊雜談30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言