Android应用在横向模式下留下间距

Posted

技术标签:

【中文标题】Android应用在横向模式下留下间距【英文标题】:Android app left spacing when landscape mode 【发布时间】:2022-01-23 21:36:20 【问题描述】:

您好,我目前正在创建一个应用程序,我在其中强制一项活动处于横向模式。

它可以工作,但我一直保持左侧间距,好像屏幕左侧仍有一个操作栏/状态栏。

这是我的主题:

<style name="Theme.MyApp" parent="Theme.AppCompat.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
    <!--<item name="android:windowFullscreen">true</item>-->
    <item name="android:windowTranslucentStatus">true</item>
</style>

在清单文件中包含此代码的活动之外的所有活动中都可以正常工作:

    <activity
        android:name=".MyActivity"
        android:exported="false"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:screenOrientation="sensorLandscape"
        android:theme="@style/Theme.MyApp"/>

任何帮助都会很棒。

谢谢!

【问题讨论】:

【参考方案1】:

在网上搜索了一段时间后,我找到了这个页面:

https://developer.android.com/guide/topics/display-cutout

事实证明,在 Android 9(API 级别 28)及更高版本中存在显示切口。默认情况下,当以纵向模式显示时,内容会被渲染到剪切区域,只有在横向模式下,它的内容才会被显示(不将内容呈现到剪切区域)。

LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT - 使用此默认设置, 以纵向模式显示时,内容呈现到剪切区域, 但是在横向模式下显示时,内容会被加黑。

所以为了解决我的问题,我需要做的就是将剪切模式设置为shortEdges

LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES - 内容呈现到 纵向和横向模式下的剪切区域。

通过将以下行添加到我的主题样式中。

<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>

【讨论】:

以上是关于Android应用在横向模式下留下间距的主要内容,如果未能解决你的问题,请参考以下文章

如何在横向模式下显示 android 启动画面?

Android 23 及更小版本在横向模式下不会填满所有屏幕

我的应用内容在横向模式下被截断

Android TimePicker 在横向模式下无法很好地显示

如何以编程方式将我的 android 应用程序锁定为纵向/横向模式?

以横向模式返回 (android.hardware.Camera)