Android全屏黑边解决方案

在Android12以上的手机,设置全屏后屏幕底部有黑边或者白边,有的屏幕顶部有黑边。解决方案很简单,在使用的主题中添加对应的设置即可,如下:

  1. res/values/themes.xml

    xml 复制代码
    <resources>
        <style name="Base.Theme.Laughf" parent="Theme.Material3.DayNight.NoActionBar">
            <!--全屏后顶部状态栏将不显示-->
            <item name="android:windowFullscreen">true</item>
    
            <!--使屏幕顶部的状态栏透明-->
            <item name="android:windowTranslucentStatus">true</item>
    
            <!--使屏幕底部的导航栏透明,有的手机是半透明-->
            <item name="android:windowTranslucentNavigation">true</item>	        
        </style>
    
        <style name="Theme.Laughf" parent="Base.Theme.Laughf" />
    </resources>
  2. res/values-v27/themes.xml

    xml 复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="Base.Theme.Laughf" parent="Theme.Material3.DayNight.NoActionBar">
            <!--全屏后顶部状态栏将不显示-->
            <item name="android:windowFullscreen">true</item>
    
            <!--使屏幕顶部的状态栏透明-->
            <item name="android:windowTranslucentStatus">true</item>
    
            <!--使屏幕底部的导航栏透明,有的手机是半透明-->
            <item name="android:windowTranslucentNavigation">true</item>
    
            <!--在我的小米11pro(android13) 上,虽然状态栏隐藏了,但是原状态位置上会被显示黑色。用下面的属性可解决,但是它是在API27才出的,所以需要声明在v27的文件夹中-->
            <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
        </style>
    </resources>
  3. 使用主题

    xml 复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">
    
        <application
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"        
            android:theme="@style/Theme.Laughf">
            <activity
                android:name=".MainActivity"
                android:exported="true">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>

    这里把主题应用到了application,则所有的界面都会全屏,也可单独把主题设置到需要全屏的Activity上。

这种全屏后有个问题,如果在界面的底部有按钮,且系统启用了虚拟导航栏,则我们界面的按钮可能显示在虚拟导航栏的下方,这样导致点击不了下面的按钮。这种情况可以看看怎么获取虚拟导航栏的高度,然后给界面设置一个marginBottom。

相关推荐
游戏开发爱好者82 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
王码码20352 小时前
Flutter for OpenHarmony 实战之基础组件:第三十一篇 Chip 系列组件 — 灵活的标签化交互
android·flutter·交互·harmonyos
黑码哥3 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
亓才孓3 小时前
[JDBC]元数据
android
独行soc3 小时前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
金融RPA机器人丨实在智能3 小时前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿3 小时前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
独行soc4 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码20354 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
2501_915106324 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview