You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何消除部分Android设备横屏模式下的左侧圆角

解决横屏模式下Activity圆角与刘海区域适配问题

针对你遇到的横屏时Activity出现圆角、刘海区域显示异常,且与Unity界面视觉不协调的问题,以下是几个通用简便的解决方案:

1. 系统窗口属性配置(核心方案)

通过代码和主题配置,强制移除窗口圆角并禁用刘海区域的使用:

代码层面(Activity的onCreate方法)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Window window = getWindow();
    // 让布局不受系统窗口(状态栏、刘海)约束
    window.setDecorFitsSystemWindows(false);

    // 处理刘海区域:强制不使用任何刘海区域
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        WindowManager.LayoutParams params = window.getAttributes();
        params.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;
        window.setAttributes(params);
    }

    // Android 12+ 直接设置窗口圆角为0
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
        window.setCornerRadius(0f);
        WindowInsetsController insetsController = window.getInsetsController();
        if (insetsController != null) {
            // 隐藏状态栏/导航栏(可选,根据需求调整)
            insetsController.hide(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
            insetsController.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
        }
    }

    setContentView(R.layout.your_layout);
}

主题层面(styles.xml)

在你的Theme.AppCompat.Light.NoActionBar主题中添加以下属性:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- 其他已有的属性 -->
    <item name="android:windowCornerRadius">0dp</item> <!-- Android 12+ 生效 -->
    <item name="android:windowLayoutInDisplayCutoutMode">never</item> <!-- 禁用刘海区域 -->
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
</style>

2. 布局根视图调整

修改你的ConstraintLayout属性,确保它完全填充窗口,避免被圆角区域裁剪:

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="false"
    android:clipToPadding="false"
    android:clipChildren="false"
    android:background="#your_background_color">

    <!-- 你的子视图内容 -->

</androidx.constraintlayout.widget.ConstraintLayout>
  • fitsSystemWindows="false":让布局忽略系统窗口的内边距,直接占满屏幕
  • clipToPadding="false"、clipChildren="false":确保视图内容不会被裁剪,覆盖圆角区域

3. 三星设备特殊适配

部分三星设备有独立的窗口圆角控制逻辑,可通过反射强制移除:

if (Build.MANUFACTURER.equalsIgnoreCase("samsung")) {
    try {
        Window window = getWindow();
        Class<?> windowCls = Class.forName("android.view.Window");
        Method setCornerRadiusMethod = windowCls.getMethod("setCornerRadius", float.class);
        setCornerRadiusMethod.invoke(window, 0f);
    } catch (Exception e) {
        // 捕获异常,避免崩溃
        e.printStackTrace();
    }
}

方案优先级

优先组合使用方案1+方案2,这是官方支持的通用适配方式;如果三星设备仍有问题,再补充方案3的特殊处理。这样既可以解决圆角问题,又能确保左侧刘海区域不被使用,和Unity界面保持视觉统一。

内容的提问来源于stack exchange,提问作者FiveDragons

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 20:33:14