当软键盘可见时不会调用onBackPressed

问题描述 投票:0回答:2

我知道这个答案已被多次询问,但还没有一个合法的答案可以解决这个问题。直到今天,我仍然不敢相信 Google 还没有为 SoftKeyBoard 添加监听器。我很想知道是否有人有办法在键盘可见时听 backPress 的声音?我问这个问题是因为在 Google Play 商店中,当搜索可见并且您按回键时,它会同时隐藏搜索和键盘。我已经重新创建了搜索,但找不到同时关闭自定义搜索视图和键盘的合法答案。我尝试了很多答案,但没有一个有效。

我在 Manifest MainActivity 中调用“adjustPan”以防止自定义视图发生移动。 “adjustPan”防止根布局为软键盘腾出空间,而是软键盘位于根布局上方。因此,这消除了任何措施解决方案,而这一直是大多数答案的主要解决方案。

android:windowSoftInputMode="adjustPan"

这是自定义的SearchView

enter image description here

android
2个回答
0
投票

Google 很可能没有监听

onBackPressed
事件,而是监听涉及键盘的配置更改。如果您想在键盘更改为“隐藏”时隐藏某些内容,请使用
onConfigurationChanged
监视配置,它将具有相同的效果。

参见这篇文章:如何在Android中捕获“虚拟键盘显示/隐藏”事件?


0
投票

聚会有点晚了,但这就是我在 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
    }

希望对某人有帮助

© www.soinside.com 2019 - 2024. All rights reserved.