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

Android全屏模式下WebView输入框被键盘遮挡问题求助

问题:沉浸式全屏Android应用中WebView输入框被键盘遮挡

在启用沉浸式全屏模式的Android应用中,键盘弹出时WebView内的输入框焦点居中效果消失,输入框被键盘遮挡,用户无法查看输入内容。移除全屏相关系统UI配置代码后问题解决,但应用必须保持完全全屏(隐藏状态栏与导航栏)。


解决方案

核心问题是沉浸式全屏模式下adjustResize的窗口调整逻辑被布局类系统UI标志干扰,通过调整系统UI标志组合、保留关键软输入配置,即可同时实现全屏状态和输入框正常显示。

1. 调整系统UI标志组合

移除SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN和SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION这两个布局扩展类标志,仅保留控制全屏隐藏的核心标志,避免干扰窗口resize逻辑。

修改BrowserActivity中的onCreate和onWindowFocusChanged方法内的系统UI配置代码:

// 替换原有的系统UI配置代码
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_STABLE
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_FULLSCREEN
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);

2. 保留窗口软输入模式配置

确保AndroidManifest.xml中BrowserActivity的android:windowSoftInputMode="adjustResize"配置保留,这是键盘弹出时窗口自动调整大小的核心开关。

3. 优化WebView布局属性

给WebView添加android:fitsSystemWindows="false"属性,明确告知系统不需要自动适配系统UI区域,配合我们手动控制的全屏逻辑:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".BrowserActivity">
        <WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="false" />
</RelativeLayout>

补充说明

  • SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN/LAYOUT_HIDE_NAVIGATION会让布局扩展到状态栏/导航栏区域,但会阻断adjustResize的窗口调整逻辑,导致键盘弹出时WebView无法上移。
  • SYSTEM_UI_FLAG_IMMERSIVE_STICKY保留,确保全屏状态的粘性:用户滑动边缘唤起系统UI后,UI会自动隐藏,维持全屏体验。

内容的提问来源于stack exchange,提问作者UserAndroidDeveloper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:54:55