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;
我想以编程方式从屏幕顶部在全屏上绘制一些东西。但是,始终存在 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;