我有一个按钮和edittext。当用户在edittext中完成输入并按下按钮时,我想关闭我的软键盘。
或其任何指南或参考链接。
答案 0 :(得分:2)
调用此函数隐藏系统键盘:
fun View.hideKeyboard() {
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(windowToken, 0)
}
答案 1 :(得分:0)
fun hideSoftKeyboard(mActivity: Activity) {
// Check if no view has focus:
val view = mActivity.currentFocus
if (view != null) {
val inputManager = mActivity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputManager.hideSoftInputFromWindow(view.windowToken, 0)
}
}
fun showKeyboard(yourEditText: EditText, activity: Activity) {
try {
val input = activity
.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
input.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT)
} catch (e: Exception) {
e.printStackTrace()
}
}
答案 2 :(得分:0)
我稍微修改了@Serj Ardovic的回应
private fun hideKeyboard(view: View) {
view?.apply {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(view.windowToken, 0)
}
}
因为它真的符合我的要求
答案 3 :(得分:0)
您可以使用新功能扩展所有EditText
,当EditText
的焦点丢失时,将始终隐藏软键盘。如果您想要隐藏键盘,当某些EditText
的焦点丢失时,只需使用此行代码EditText
editText.hideSoftKeyboardOnFocusLostEnabled(true)
在EditText
的扩展程序中,我们只需添加或删除自己的OnFocusLostListener
fun EditText.hideSoftKeyboardOnFocusLostEnabled(enabled: Boolean) {
val listener = if (enabled)
OnFocusLostListener()
else
null
onFocusChangeListener = listener
}
以下是OnFocusLostListener
的实现,如果附件View
的焦点丢失,则会隐藏键盘。
class OnFocusLostListener: View.OnFocusChangeListener {
override fun onFocusChange(v: View, hasFocus: Boolean) {
if (!hasFocus) {
val imm = v.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(v.windowToken, 0)
}
}
}