我知道这个答案已被多次询问,但还没有一个合法的答案可以解决这个问题。直到今天,我仍然不敢相信 Google 还没有为 SoftKeyBoard 添加监听器。我很想知道是否有人有办法在键盘可见时听 backPress 的声音?我问这个问题是因为在 Google Play 商店中,当搜索可见并且您按回键时,它会同时隐藏搜索和键盘。我已经重新创建了搜索,但找不到同时关闭自定义搜索视图和键盘的合法答案。我尝试了很多答案,但没有一个有效。
我在 Manifest MainActivity 中调用“adjustPan”以防止自定义视图发生移动。 “adjustPan”防止根布局为软键盘腾出空间,而是软键盘位于根布局上方。因此,这消除了任何措施解决方案,而这一直是大多数答案的主要解决方案。
android:windowSoftInputMode="adjustPan"
这是自定义的SearchView
Google 很可能没有监听
onBackPressed
事件,而是监听涉及键盘的配置更改。如果您想在键盘更改为“隐藏”时隐藏某些内容,请使用 onConfigurationChanged
监视配置,它将具有相同的效果。
参见这篇文章:如何在Android中捕获“虚拟键盘显示/隐藏”事件?
聚会有点晚了,但这就是我在 Kotlin 中使用的
它分为2个功能
fun setKeyboardVisibilityListener() {
window.decorView.rootView.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener{
var alreadyOpen = false
override fun onGlobalLayout() {
val isShown = keyboardVisible()
if (isShown == alreadyOpen)
return;
alreadyOpen = isShown;
if (isShown){
//your code here
}
}
})
}
fun keyboardVisible(): Boolean {
val rect = Rect()
val rootView = window.decorView.rootView
rootView.getWindowVisibleDisplayFrame(rect)
val screenHeight = rootView.height
val keypadHeight = screenHeight - rect.bottom
return keypadHeight > screenHeight * 0.15
}
希望对某人有帮助