You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级targetSdkVersion至API 35+后WebView打包APK中输入框被原生键盘遮挡的问题求助

升级targetSdkVersion至API 35+后WebView打包APK中输入框被原生键盘遮挡的问题求助

针对你遇到的这个棘手问题,因为没法接触原生代码,咱们完全可以从Web端入手解决,下面几个方案都是只需要调整你的本地HTML/JS/CSS就能实现的,适配第三方打包工具的场景:

  • 监听窗口变化,手动滚动到输入框
    API 35+对WebView的键盘适配逻辑做了调整,我们可以通过JavaScript监听窗口高度变化,判断键盘弹出后,主动把当前聚焦的输入框滚动到可视区域。试试这段代码:

    // 记录初始窗口高度
    let initialWindowHeight = window.innerHeight;
    
    window.addEventListener('resize', () => {
      const currentHeight = window.innerHeight;
      // 窗口高度变小,判定为键盘弹出
      if (currentHeight < initialWindowHeight) {
        const activeInput = document.activeElement;
        // 确认当前聚焦的是输入类元素
        if (activeInput && ['INPUT', 'TEXTAREA'].includes(activeInput.tagName)) {
          // 平滑滚动到输入框居中位置,避免被键盘遮挡
          activeInput.scrollIntoView({ behavior: 'smooth', block: 'center' });
        }
      } else {
        // 键盘收起,更新初始高度
        initialWindowHeight = currentHeight;
      }
    });
    

    把这段代码放到你的JS文件里,或者直接嵌入HTML的<script>标签中即可。

  • 优化Viewport设置
    检查你的HTML头部的viewport meta标签,调整为更适配移动端的设置,确保WebView能正确识别页面高度:

    <meta name="viewport" content="width=device-width, initial-scale=1.0, height=device-height, viewport-fit=cover, user-scalable=no">
    

    同时给页面的根容器(比如<body>或者最外层的div)设置min-height: 100vh;,保证页面高度始终占满设备视口,避免滚动区域异常。

  • 利用CSS定位固定输入区域
    如果你的输入框固定在页面底部,可以用CSS的粘性定位让它在键盘弹出时自动上移:

    .bottom-input-container {
      position: sticky;
      bottom: 0;
      padding: 10px;
      background-color: #fff;
      /* 加上z-index确保不被其他元素遮挡 */
      z-index: 100;
    }
    

    这种方式适合底部输入栏的布局,能让输入框始终保持在键盘上方。

你可以根据自己的页面布局选择最合适的方法试试,这些操作都不需要碰原生代码,完全适配你的打包场景。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 12:07:17