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


复制代码
如果您感觉文章有用的话,麻烦点个赞吧!
如果您发现文章有任何错误或建议,请评论区留言或者私信!
深海谢过各位的支持,一起加油!
相关推荐
摘星编程2 小时前
RAG的下一站:检索增强生成如何重塑企业知识中枢?
android·人工智能
fatiaozhang95272 小时前
基于slimBOXtv 9.19 V2(通刷S905L3A/L3AB)ATV-安卓9-通刷-线刷固件包
android·电视盒子·刷机固件·机顶盒刷机·slimboxtv9.19v2·slimboxtv
左绍骏2 小时前
01.学习预备
android·java·学习
鹏程十八少2 小时前
破解Android悬浮窗遮挡无障碍服务难题:我在可见即可说上踩过的坑
android·前端·面试
Kapaseker3 小时前
前端已死...了吗
android·前端·javascript
Winston Wood3 小时前
Android图形与显示系统经典故障解决方案:从源码到实操
android·图形系统·显示系统
Full Stack Developme3 小时前
Mycat 2 实现 MySQL 读写分离,并且实现 主从同步
android·数据库·mysql
Winston Wood3 小时前
Android图形与显示系统:从架构到协作的深度解析
android·图形系统·显示系统
lxysbly3 小时前
psx模拟器安卓版带金手指
android