3

在我的活动中,我使用以下代码打开/关闭全屏。全屏是指隐藏/显示状态栏。该问题发生在具有 Cutout(有摄像头的位置)并且状态栏可见且处于横向状态的设备上。当状态栏被隐藏或/和纵向时,它会扩展。

    if(aStatus){ // Hide
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN , WindowManager.LayoutParams.FLAG_FULLSCREEN);

    } else {

        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }

如图所示,左侧的白色区域应被覆盖。

https://i.stack.imgur.com/7va88.png

  compileSdkVersion 29
  buildToolsVersion '29.0.3'

  minSdkVersion 21
  targetSdkVersion 29

选定的解决方案将获得 50 分奖励。谢谢!

4

1 回答 1

4

这是修复。根据需要进行调整。

  1. 创建目标颜色或图像的 BitmapDrawable。
  2. 在活动的窗口上设置该可绘制对象。

例子:

Bitmap bitmap = Bitmap.createBitmap(24, 24, Bitmap.Config.ARGB_8888);
bitmap.eraseColor(Color.MAGENTA);
BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), bitmap);
getWindow().setBackgroundDrawable(bitmapDrawable);

另一个例子:

Bitmap bitmap = Bitmap.createBitmap(24, 24, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.MAGENTA);
BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), bitmap);
getWindow().setBackgroundDrawable(bitmapDrawable);

两者都在 Activity.onCreate 中进行了测试。

于 2020-10-16T23:54:36.583 回答