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

