I have one button and edittext. I want to close my soft keyboard when user complete input in edittext and press button.
Or any guide or reference link for it.
I have one button and edittext. I want to close my soft keyboard when user complete input in edittext and press button.
Or any guide or reference link for it.
Call this function to hide the system keyboard:
fun View.hideKeyboard() {
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(windowToken, 0)
}
I slightly modify response of @Serj Ardovic
private fun hideKeyboard(view: View) {
view?.apply {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(view.windowToken, 0)
}
}
as its really works for my requirement
You can extend all EditText
with new function, which will be hide soft keyboard always when focus for EditText
is lost. If you want hide keyboard, when focus for some EditText
is lost, just use this line of code for this EditText
editText.hideSoftKeyboardOnFocusLostEnabled(true)
In extension for EditText
we just add or remove our own OnFocusLostListener
fun EditText.hideSoftKeyboardOnFocusLostEnabled(enabled: Boolean) {
val listener = if (enabled)
OnFocusLostListener()
else
null
onFocusChangeListener = listener
}
Here is implementation of OnFocusLostListener
which hides keyboard if focus for attached View
is lost.
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)
}
}
}
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()
}
}