關於輸入完資料跳到下一個元件取得焦點形成看似自動輸入的作法有很多。像是利用輸入鍵盤跳至下一個元件。
但是當我們不想按完值後再點選鍵盤的下一個按鍵作焦點切換的話,
可以試試使用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元件取得焦點。