public ReadTopUtilsDialog(@NonNull Context context, View contentView) {
super(context, R.style.ActionSheetDialogStyle);
this.contentView = contentView;
Window window = this.getWindow();
// 设置dialog 显示的位置 默认center 显示再屏幕中间 现设置显示再顶部
window.setGravity(Gravity.TOP);
// 设置dialog 进出场动画
window.setWindowAnimations(R.style.ReadTopUtilsDialog);
// 设置dialog 尺寸 和偏移
window.getDecorView().setPadding(0, 0, 0, 0);
WindowManager.LayoutParams lp = window.getAttributes();
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
// 前2 个flag设置dialog 显示到状态栏 第三个设置点击dialog以外的蒙层 不抢夺焦点 响应点击事件
lp.flags = WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
lp.dimAmount = 0.0f;
window.setAttributes(lp);
// 设置点击蒙层不消失
setCanceledOnTouchOutside(false);
}
设置显示到状态栏 在自定义dialog里设置 lp.flags = WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN 即可