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


复制代码
如果您感觉文章有用的话,麻烦点个赞吧!
如果您发现文章有任何错误或建议,请评论区留言或者私信!
深海谢过各位的支持,一起加油!
相关推荐
csj501 小时前
安卓基础之《(26)—回到桌面与切到任务列表》
android
Grackers1 小时前
Android Perfetto 系列 7:MainThread 和 RenderThread 解读
android
whatever who cares1 小时前
java/android中单例模式详解
android·java
草莓熊Lotso1 小时前
【Linux系统加餐】 mmap 文件映射全解:从底层原理、API 到实战开发(含 malloc 模拟实现)
android·linux·运维·服务器·c语言·c++
peakmain91 小时前
CmComposeUI——基于 Kotlin Multiplatform Compose 的 UI 组件库
android
LcGero2 小时前
Cocos Creator 业务与原生通信详解
android·ios·cocos creator·游戏开发·jsb
fundoit2 小时前
MySQL插入数据遇到唯一键已存在怎么办?
android·数据库·mysql
ameyume2 小时前
基于原生Android 16设置音量调用流程
android·audio
ii_best2 小时前
lua语言开发脚本基础、mql命令库开发、安卓/ios基础开发教程,按键精灵新手工具
android·ios·自动化·编辑器
simpleeeeee2 小时前
Android 17 开发者指南:新 API、重大变更以及现在应该迁移的内容
android