当focusing edittext时,我想在范围外敲击时隐藏软键盘。
MainActivity.kt
override fun onTouchEvent(event: MotionEvent?): Boolean {
if (currentFocus != null) {
val inputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(
// container is ConstraintLayout
binding.container.windowToken,
InputMethodManager.HIDE_NOT_ALWAYS
)
}
return false
}
输入法管理器是在MainActivity中编写的
在XML中
<ConstraintLayout>
<ScrollView>
<LinearLayout>
</LinearLayout>
</ScrollView>
</ConstraintLayout>
当我创建此布局时,当我在范围外点击时键盘不隐藏如何隐藏键盘?
如果只写ConstraintLayout,它可以工作,但不能滚动
xxFragment.kt
scrollView.setOnClickListener {
val imm = requireContext().getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(binding.scrollView.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
}
我尝试了上面的代码,但失败了
2条答案
按热度按时间tkclm6bt1#
您需要覆盖“活动”的
dispatchTouchEvent()
方法。只要在你的活动中写这段代码,它就会在你触摸
EditText
之外的地方隐藏软键盘。不需要在任何地方调用任何函数。n3schb8v2#
将id分配给
ConstraintLayout
,对于你的点击监听器,