升级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
相关产品推荐
相关产品推荐

