Android WebView吊起软键盘遮挡输入框的问题解决

直接复制代码:

Kotlin:
Kotlin 复制代码
        mWebView?.getViewTreeObserver()?.addOnGlobalLayoutListener {
                val r = Rect()
                mWebView?.getWindowVisibleDisplayFrame(r)
                val screenHeight = mWebView?.getRootView()?.height ?: 0
                val keypadHeight = screenHeight - r.bottom
                val layoutParams = mWebView?.layoutParams
                if (keypadHeight > screenHeight * 0.15) { // 如果键盘高度超过屏幕高度的15%则认为键盘显示
                    layoutParams?.height = screenHeight - keypadHeight; // 调整WebView高度
                    mWebView?.layoutParams = layoutParams
                } else if (layoutParams?.height != FrameLayout.LayoutParams.MATCH_PARENT) { // 如果键盘隐藏,恢复原始高度或MATCH_PARENT
                    layoutParams?.height = FrameLayout.LayoutParams.MATCH_PARENT; // 或者设置为某个固定高度
                    mWebView?.layoutParams = layoutParams
                }
            }
Java:
java 复制代码
yourWebView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        Rect r = new Rect();
        yourWebView.getWindowVisibleDisplayFrame(r);
        int screenHeight = yourWebView.getRootView().getHeight();
        int keypadHeight = screenHeight - r.bottom;
        FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)yourWebView.getLayoutParams(); 
        if (keypadHeight > screenHeight * 0.15) { // 如果键盘高度超过屏幕高度的15%则认为键盘显示
            layoutParams.height = screenHeight - keypadHeight; // 调整WebView高度
            yourWebView.setLayoutParams(layoutParams);
        } else if (layoutParams.height != FrameLayout.LayoutParams.MATCH_PARENT) { // 如果键盘隐藏,恢复原始高度或MATCH_PARENT
            layoutParams.height = FrameLayout.LayoutParams.MATCH_PARENT; // 或者设置为某个固定高度
            yourWebView.setLayoutParams(layoutParams);
        }
    }
});

更多算法内容推荐:

Android 相关文章https://blog.csdn.net/qq_39731011/category_7565212.html


复制代码
如果您感觉文章有用的话,麻烦点个赞吧!
如果您发现文章有任何错误或建议,请评论区留言或者私信!
深海谢过各位的支持,一起加油!
相关推荐
不爱说话郭德纲8 小时前
告别漫长的HbuilderX云打包排队!uni-app x 安卓本地打包保姆级教程(附白屏、包体积过大排坑指南)
android·前端·uni-app
Sinclair12 小时前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
雮尘15 小时前
手把手带你玩转Android gRPC:一篇搞定原理、配置与客户端开发
android·前端·grpc
ktl17 小时前
Android 编译加速/优化 80%:一个文件搞定,零侵入零配置
android
alexhilton1 天前
使用FunctionGemma进行设备端函数调用
android·kotlin·android jetpack
冬奇Lab1 天前
InputManagerService:输入事件分发与ANR机制
android·源码阅读
张小潇1 天前
AOSP15 Input专题InputManager源码分析
android·操作系统
RdoZam1 天前
Android-封装基类Activity\Fragment,从0到1记录
android·kotlin
奥陌陌2 天前
android 打印函数调用堆栈
android
用户985120035832 天前
Compose Navigation 3 深度解析(二):基础用法
android·android jetpack