android自定义dialog图片全屏,android的Dialog全屏、activity大小的设置详解

引言:一搬的Dialog系统默认是不允许全屏的,下面我们介绍几种Dialog全屏的方式

第一、

final Dialog dialog = new Dialog(WenDetailActivity.this, R.style.popupDialog);

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

dialog.setContentView(R.layout.wen_cover_pager);

dialog.setCanceledOnTouchOutside(false);

dialog.setCancelable(false);

dialog.show();

style的样式:

@drawable/filled_activity_bg

false

true

true

true

@null

@null

0.6

true

第二、

我们也可以自定义Dialog,首先继承Dialig,然后再构造函数中添加

super(context, android.R.style.Theme); setOwnerActivity((Activity)context);

第三、

又或者我们设置://dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

也可以让我们的Dialog全屏显示。

注意:按照上述方式设置Dialog全屏,有些朋友可能会发现,Dialog全屏好像并不是我们想要的,因为它把状态栏也遮住了,有时候我们只是想让它遮住标题栏,就是和我们的activity一样大小,就这个问题下面小编介绍一种设置Dialog和activity一样大小的方法。

第三、

首先介绍一个方法:getDecorView()

decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。 于是,我们就可以算出状态栏的高度了。

Rect frame = new Rect();

getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);

int statusBarHeight = frame.top; 同样我们获取标题栏的高度

getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了,代码如下:

int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); int titleBarHeight = contentTop - statusBarHeight; //statusBarHeight是上面所求的状态栏的高度

最后:知道上述原理,我们就可以设置我们的Dialog和activity一样大了,Java代码如下:

final Dialog dialog = new Dialog(WenDetailActivity.this, R.style.popupDialog);

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

dialog.setContentView(R.layout.wen_cover_pager);

dialog.setCanceledOnTouchOutside(false);

dialog.setCancelable(false);

WindowManager.LayoutParams lay = dialog.getWindow().getAttributes();

DisplayMetrics dm = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

Rect rect = new Rect();

View view = getWindow().getDecorView();//decorView是window中的最顶层view,可以从window中获取到decorView

view.getWindowVisibleDisplayFrame(rect);

lay.height = dm.heightPixels - rect.top;

lay.width = dm.widthPixels; style.xml如下:

@drawable/filled_activity_bg

false

true

true

true

@null

@null

0.6

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值