Android/安卓 自定义dialog取消背景模糊、设置弹出位置、弹窗大小等

这篇主要解决一些我在自定义dialog时的一些问题。

先直接上代码。写在自定义Dialog类的oncreate方法中。

        // 获取窗口对象
        Window dialogWindow = this.getWindow();
        WindowManager m = context.getWindowManager();

        // 获取屏幕宽、高用
        Display d = m.getDefaultDisplay();

        // 获取对话框当前的参数值
        WindowManager.LayoutParams p = dialogWindow.getAttributes();

        // 高宽度设置
        p.width = (int) (d.getWidth() * 0.76);
        p.height = (int) (d.getHeight() * 0.835);

        p.dimAmount = 0f;//取消背景模糊

        //相对于中心点的偏移量
        p.x = 500;
        p.y = -500;
        dialogWindow.setBackgroundDrawableResource(R.color.transparent);//去掉Dialog周围的padding
        dialogWindow.setAttributes(p);

1、最近一个项目需要做一个弹窗,但是需要做到背景全透明的效果,dialog默认的背景是弹出dialog时背景变暗。首先获取窗口对象,然后获取当前对话框的参数值,最后p.dimAmount = 0f;就可以设置背景透明。

2、做项目时发现弹窗会自动变成最小布局,也就是只显示最小的一部分,就像自动变成了Wrap_content,那么怎么设置成全屏或者其他大小呢?

与1中一样,首先还是要先获取窗口对象和对会话框当前参数值,然后还要获取屏幕高宽。最后设置高宽度就行了。其中的乘数就是占屏幕的比例(见代码)

3、做项目时还发现对弹窗位置有要求,本来是需要填充满整个fragment,但是找了很多办法都没有实现,所以只能调整弹窗的相对位置,首先我们需要知道dialog默认是在中心位置弹出的。接下来,仍然需要获取窗口对象和对话框当前的参数值,然后设置相对于中心点的偏移量就行。

4、最后一个问题,我在调用dialog时发现即使设置了填充全屏仍然会有一圈类似padding的背景,这时候只需要调用dialogWindow.setBackgroundDrawableResource(R.color.transparent);就行了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值