Android 嵌入h5顶部状态栏空白

Android 嵌入h5顶部状态栏空白

在 onCreate() 中处理 WindowInsets

javascript 复制代码
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    EdgeToEdge.enable(this);
    setContentView(R.layout.activity_h5_web_view);

    // 关键:让 WebView 沉浸式绘制到状态栏下方
    ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.webview), (v, insets) -> {
        // 获取系统栏(状态栏、导航栏)的插入值
        WindowInsetsCompat.Type.systemBars(); // API 29+
        int left = insets.getInsets(WindowInsetsCompat.Type.systemBars()).left;
        int top = insets.getInsets(WindowInsetsCompat.Type.systemBars()).top;
        int right = insets.getInsets(WindowInsetsCompat.Type.systemBars()).right;
        int bottom = insets.getInsets(WindowInsetsCompat.Type.systemBars()).bottom;

        // 只保留 WebView 内容区域,不被系统 UI 影响
        v.setPadding(0, 0, 0, 0); // 移除所有 padding

        // 返回 CONSUMED 表示我们自己处理了 insets,不要继续传递
        return WindowInsetsCompat.CONSUMED;
    });

    initViews();
    setupWebView();
    loadPage();
}
相关推荐
古法安卓2 小时前
Android-Direct Boot 阶段与 getFilesDir() 路径变更问题深度分析
android·java·android studio
阿巴斯甜2 小时前
Android Studio Detekt 使用
android
杉氧2 小时前
Flutter 跨平台多端适配与 Android/iOS 一键自动化打包发布
android·前端·flutter
Super 含3 小时前
Android 包体积优化(一):APK 到底大在哪里?从 APK 结构到体积分析
android·ide·vscode
Super 含4 小时前
Android 包体积优化(四):深入 ReDex——StripDebugInfo、InterDex 与 DEX 重排
android
安卓与AI研习社4 小时前
主线程明明是空闲的,为什么仍然 ANR?3 个真实 Trace 的证据链复盘
android
恋猫de小郭5 小时前
Dart 3.13 大更新,感觉比 Flutter 更带劲
android·前端·flutter
大锅盖16 小时前
HarmonyOS 6.1.1 ArkWeb:交付门户下载资料前-为什么必须先登记下载代理与来源字段
android·华为·harmonyos
峥嵘life14 小时前
Android16 311Y3 EAP-TLS 网络连接失败分析与修复总结
android·开发语言·人工智能·php
Kapaseker15 小时前
破坏性更新 - 解读 Jetpack Compose 1.12
android·kotlin