PadAdapt — 平板横屏铺满 + 应用布局适配模块(LSPosed)

在小米平板 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

system_server 侧(可选)

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(夸克网盘)

使用

  1. 安装 app/build/outputs/apk/debug/app-debug.apk
  2. 打开 LSPosed 管理器 →「模块」→ 启用 PadAdapt
  3. 点开 PadAdapt →「作用域」,勾选要适配的应用(夸克网盘 = com.quark.clouddrive
  4. (可选,推荐)要覆盖 manifest 锁竖屏的 App:在「作用域」额外勾选 System Framework,然后重启平板让 system_server 的 hook 生效
  5. 强制停止目标应用后重新打开

验证是否生效

# 横屏下主窗口 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_initio.padadapt.module.MainHook
  • manifest 含 xposedmodule / xposeddescription / xposedminversion 三件套

Releases

1.0

Stable

8/25/2026, 4:27:57 AM

PadAdapt v1.0 首个版本。

  • 应用侧:锁竖屏 Activity 改为跟随设备旋转(FULL_SENSOR),竖屏正常、横屏铺满,带防抖避免方向抖动。
  • 夸克网盘适配:登录弹窗改为约 55% 屏宽、垂直居中、四角圆角。
  • system_server 侧(可选,需开 System Framework 作用域):解除 MIUI/HyperOS letterbox,让 manifest 锁竖屏的 App 横屏首次打开即铺满。内置白名单:one.hh.oneclient / com.c2vl.peace / com.quark.clouddrive。
  • 使用:LSPosed 启用本模块,勾选目标应用作用域。

Assets

1