android 设置背景颜色时,屏幕顶部会保留一个白色条

f45qwnt8  于 2023-11-15  发布在  Android
关注(0)|答案(1)|浏览(140)

对于我的应用程序,我想让整个屏幕都是一种颜色。

  • activity_main.xml* 的重要部分如下所示:
...
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@color/green"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
...

字符串
我使用此函数隐藏系统UI:
(演职人员:https://stackoverflow.com/a/37380780/14384063

private void hideSystemUI(){
    int uiOptions = getWindow().getDecorView().getSystemUiVisibility();
    int newUiOptions = uiOptions;
    if (Build.VERSION.SDK_INT >= 14) {
        newUiOptions ^= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
    }
    if (Build.VERSION.SDK_INT >= 16) {
        newUiOptions ^= View.SYSTEM_UI_FLAG_FULLSCREEN;
    }
    if (Build.VERSION.SDK_INT >= 18) {
        newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
    }
    getWindow().getDecorView().setSystemUiVisibility(newUiOptions);
}


我还找到了这个,并将其添加到 themes.xml 中:

<!-- Support Display Cutouts -->
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>


然而,屏幕仍未完全变绿色:
x1c 0d1x的数据
它在模拟器上和我的手机上看起来都是这样的。我错过了什么?理想情况下,我也可以使用这个空间来绘图。
在此先谢谢您!

lqfhib0f

lqfhib0f1#

你应该看看official documentation,里面有一个很好的指南,可以帮助你实现目标。
现在回答你的问题:
它与屏幕颜色不同的原因是,您已经启用了在状态栏下方绘制屏幕内容的功能,但它实际上并没有这样做。
有两种方法可以做到这一点。

1.将状态栏设置为与您的背景相同的颜色

当背景变化不大时(例如,总是一种颜色或在几种纯色之间变化),您可以将状态栏颜色设置为与背景相同。

this.getWindow.setStatusBarColor(yourColor);

字符串
Here's a link到一个StackOverflow线程关于这个主题和一些进一步的解释。

2.在状态栏后面绘制背景

目前,您的ConstraintLayout是根据Window Insets来调整大小的,Window Insets描述了状态和导航栏等元素的大小。

android:fitsSystemWindows="false"


到你的ConstraintLayout,所以它不confrom到那些。

警告:

视图的所有子视图也不符合insets,这就是为什么您必须设置

android:fitsSystemWindows="true"


对于直接的孩子。

相关问题