android 动态控制dialog窗口大小

本文介绍了一种在Android中限制Dialog最小宽度及最大高度的方法,通过在dialog.show()前调用特定方法,确保Dialog的宽度不低于屏幕宽度的70%,高度不超过屏幕高度的60%。

以下方法为限制dialog的最小宽度以及最大高度,可以通过修改判断条件来控制最小或最大

    /**
     * 在dialog.show()前调用此方法
     * @param mView  dialog要显示的view
     */
    private void setDialogSize(final View mView){
        mView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop,
                                       int oldRight, int oldBottom) {
                int heightNow = v.getHeight();//dialog当前的高度
                int widthNow = v.getWidth();//dialog当前的宽度
                int needWidth = (int) (getWindowManager().getDefaultDisplay().getWidth() * 0.7);//最小宽度为屏幕的0.7倍
                int needHeight = (int) (getWindowManager().getDefaultDisplay().getHeight() * 0.6);//最大高度为屏幕的0.6倍
                if (widthNow < needWidth || heightNow > needHeight){
                    if (widthNow > needWidth){
                        needWidth = FrameLayout.LayoutParams.WRAP_CONTENT;
                    }
                    if (heightNow < needHeight){
                        needHeight = FrameLayout.LayoutParams.WRAP_CONTENT;
                    }
                    mView.setLayoutParams(new FrameLayout.LayoutParams(needWidth,
                            needHeight));
                }
            }
        });
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值