在小米平板 6S Pro 等大屏平板上,很多应用横屏时被系统 letterbox 成居中竖条, 或应用内界面被设计成手机窄竖条。本模块分两层处理,互相独立:
- 应用侧(必装必勾):把锁竖屏的 Activity 改成跟随设备旋转(FULL_SENSOR), 竖屏正常显示、横屏跟随铺满;并提供应用内布局适配(如夸克登录弹窗)。
- system_server 侧(可选,需另开作用域):解除 MIUI/HyperOS 对 manifest 锁竖屏 App 的"合成竖屏显示区"(letterbox),让这类 App 横屏首次打开就铺满。
结论:要"横屏首次就铺满"覆盖所有 App(含 manifest 锁竖屏的),必须开启 System Framework 作用域;不开启则只有非硬锁竖屏的 App(如夸克)能首次铺满。 两层互相独立,开不开 system 侧都不影响应用侧的布局适配等主要功能。
MainHook.java 应用侧横屏铺满 + 按包名分发到适配器
+ system_server 侧解除 letterbox(可选)
adapter/AppAdapter.java 适配器接口(packageName + apply)
adapter/QuarkAdapter.java 夸克网盘适配:登录弹窗加宽/居中/补圆角
- hook
Activity#setRequestedOrientation(int):应用请求竖屏时改写为 FULL_SENSOR - hook
Activity#onCreate(Bundle)/onResume():兜底让锁竖屏的 Activity 跟随旋转 - 横屏启动但被固定旋转锁住时,先强制切硬横屏打破,再回到 FULL_SENSOR
MIUI/HyperOS 会按 manifest 的原始方向把竖屏 App 锁进"合成竖屏显示区"(letterbox),
此区域 App 自身看不到、改 requestedOrientation 也打不破。因此 hook
com.android.server.wm.ActivityRecord#getRequestedConfigurationOrientation(boolean,int):
当真实设备为横屏时,让白名单内的 App 返回横屏方向 → 系统认为该 App 要横屏 →
跳过 letterbox、铺满横屏,且竖屏时保持竖屏。
白名单 SYSTEM_LETTERBOX_PKGS(需把包加进这里才生效):
one.hh.oneclient(ONE·一个)com.c2vl.peace(小独)com.quark.clouddrive(夸克网盘)
- 安装
app/build/outputs/apk/debug/app-debug.apk - 打开 LSPosed 管理器 →「模块」→ 启用 PadAdapt
- 点开 PadAdapt →「作用域」,勾选要适配的应用(夸克网盘 =
com.quark.clouddrive) - (可选,推荐)要覆盖 manifest 锁竖屏的 App:在「作用域」额外勾选 System Framework,然后重启平板让 system_server 的 hook 生效
- 强制停止目标应用后重新打开
# 横屏下主窗口 letterbox 应为 [0,0][0,0]
adb shell dumpsys window windows | grep -i letterbox
# 目标 App 的任务是否仍被 letterbox(system 层生效后 areBoundsLetterboxed 应为 false)
adb shell dumpsys activity activities | grep -iE 'letterbox|one.hh.oneclient'
# 应用侧日志
adb shell logcat -d | grep -iE 'PadAdapt'- Flutter / React Native 页面无法通过原生 hook 改布局:夸克文件宫格等由 Flutter 引擎渲染,不经过 Android View 系统,原生 Xposed hook 看不到也无法改它。
- system_server 侧的解除 letterbox 依赖具体系统版本,且白名单需要逐个加包。
./gradlew :app:assembleDebug产物:app/build/outputs/apk/debug/app-debug.apk
- 依赖 LSPosed 官方 Xposed API:
compileOnly de.robv.android.xposed:api:82(经阿里云镜像) assets/xposed_init→io.padadapt.module.MainHook- manifest 含
xposedmodule/xposeddescription/xposedminversion三件套