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


复制代码
如果您感觉文章有用的话,麻烦点个赞吧!
如果您发现文章有任何错误或建议,请评论区留言或者私信!
深海谢过各位的支持,一起加油!
相关推荐
严同学正在努力34 分钟前
从备份到恢复:我用 30 分钟恢复了误删的核心业务表
android·java·数据库·ai
梦想三三1 小时前
LangChain Output Parser 实战:从字符串到结构化数据的完整指南
android·服务器·langchain·github·uv
爱笑鱼3 小时前
Binder(八):远端进程死了,BinderProxy 为什么还能收到通知?
android
Android-Flutter3 小时前
Kotlin 冷流与热流详解
android·kotlin
zhangphil4 小时前
Android ContentProvider/ContentResolver读图片,跨进程 IPC慢
android
yueqc14 小时前
Android .so 文件压缩
android·so·包体积
龚礼鹏4 小时前
深入解析 Android Automotive (AAOS) 启动流程与 CarService 核心机制(基于 Android 16 最新源码视角)
android
rosmis5 小时前
agent各指标定义
android·java·开发语言
深念Y5 小时前
Android-Linux折腾记录2 One API Android APK
android·linux·运维·apk·二进制·编译·oneapi
风样滴男人哟6 小时前
PHP特性之反射类ReflectionClass机制
android·开发语言·php