Android WindowManager.LayoutParams y 偏移量

Android WindowManager.LayoutParams y offset

我想以编程方式从屏幕顶部在全屏上绘制一些东西。但是,始终存在 y 轴偏移。似乎是状态(标题)栏的高度。

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
                    | WindowManager.LayoutParams.FLAG_FULLSCREEN,
            PixelFormat.TRANSLUCENT);
    params.gravity = Gravity.LEFT | Gravity.TOP;
    params.x = 0;
    params.y = 0;
    params.width = 200;
    params.height = 300;

    GradientDrawable gd = new GradientDrawable();
    gd.setShape(GradientDrawable.RECTANGLE);
    gd.setColor(Settings.highlightColor);
    ImageView iv = new ImageView(this);
    iv.setImageDrawable(gd);
    WindowManager windowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
    windowManager.addView(iv, params);

我已经在 AndroidManifest.xml 中设置了全屏:

android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"

这是我得到的:

尝试将 FLAG_TRANSLUCENT_STATUS 添加到您的 LayoutParams:

paramsFlags |= WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;

使用这个:

WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;