โซลูชัน Kotlin
วิธีโดยตรงในการจัดการกับแป้นพิมพ์ซ่อน + ดำเนินการใน Kotlin คือ:
// Set action
edittext.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
// Hide Keyboard
val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
true
}
false
}
Kotlin ส่วนขยาย
ใช้เพื่อโทรedittext.onDone {/*action*/}
ในรหัสหลักของคุณ ช่วยให้อ่านและบำรุงรักษาได้มากขึ้น
edittext.onDone { edittext.hideKeyboard() }
fun View.hideKeyboard() {
val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
}
fun EditText.onDone(callback: () -> Unit) {
// These lines optional if you don't want to set in Xml
imeOptions = EditorInfo.IME_ACTION_DONE
maxLines = 1
setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE) {
callback.invoke()
true
}
false
}
}
ส่วนขยายแป้นพิมพ์เพิ่มเติม
หากคุณต้องการวิธีอื่น ๆ ในการทำงานกับแป้นพิมพ์ให้ง่ายขึ้น (แสดงปิดโฟกัส): อ่านโพสต์นี้
อย่าลืมเพิ่มตัวเลือกเหล่านี้ใน edittext Xml ของคุณหากไม่มีอยู่ในโค้ด
<EditText ...
android:imeOptions="actionDone"
android:inputType="text"/>
ต้องการinputType="textMultiLine"
การสนับสนุน? อ่านโพสต์นี้แล้วอย่าเพิ่มimeOptions
หรือinputType
ใน Xml