Android版Chromium:如何始终保持全屏并解决URL栏与红边框问题
我刚好在基于Chromium Android做定制开发时遇到过一模一样的问题,给你分享下亲测可行的解决方案:
一、解决跳转新URL时自动退出全屏的问题
你用的getFullscreenManager().setPersistentFullscreenMode(true);其实只是针对当前页面生效的,页面跳转后Chromium会重置全屏状态,所以才会退出。要实现全局保持全屏,得从导航监听和生命周期两个方面入手:
- 监听页面导航事件:在页面加载完成后重新触发全屏模式。你可以在自定义的
BrowserFragment或者Tab类里给WebContents添加导航监听器,比如:
webContents.addNavigationListener(new WebContents.NavigationListener() { @Override public void onDidFinishNavigation(NavigationEntry entry) { // 只针对主框架导航生效 if (entry.isMainFrame()) { FullscreenManager fullscreenManager = getFullscreenManager(); if (fullscreenManager != null && !fullscreenManager.isPersistentFullscreenMode()) { fullscreenManager.setPersistentFullscreenMode(true); // 额外调用隐藏工具栏的方法,确保URL栏彻底隐藏 if (getToolbarManager() != null) { getToolbarManager().hideToolbar(); } } } } });
- 绑定Activity生命周期:在应用从后台切回前台时,也重新设置全屏状态,避免意外退出。在
ChromeActivity的onResume方法里添加:
@Override protected void onResume() { super.onResume(); FullscreenManager fullscreenManager = getFullscreenManager(); if (fullscreenManager != null) { fullscreenManager.setPersistentFullscreenMode(true); } }
二、移除Chromium的红色边框
这个红色边框是Chromium默认的调试提示,一般在全屏模式下触发,用来提醒开发者当前处于特殊模式。要去掉它,有两种方式:
直接注释绘制逻辑:
找到项目里的FullscreenController.java(如果项目结构有调整,可能在ui/fullscreen目录下),搜索和红色边框相关的代码,通常会有类似drawRedBorder或者直接设置红色Paint绘制边框的逻辑,直接把这部分代码注释掉即可。通过编译配置关闭:
如果是Debug版本才会显示这个边框,你可以在编译时关闭调试特性。在项目的gn配置文件里添加:
enable_debug_features = false
或者在代码里加判断,只在Debug模式下显示:
if (BuildConfig.DEBUG) { // 原来的红色边框绘制代码 }
小提示
因为你用的是定制化的Chromium-Android项目,部分文件路径可能和官方Chromium略有差异,找代码的时候可以用全局搜索关键词(比如red border、persistentFullscreen)来定位。修改后记得重新编译整个项目,确保所有改动生效。
内容的提问来源于stack exchange,提问作者vnoo
相关产品推荐
相关产品推荐

