设置自定义Dialog的宽高

前言
我们在自定义dialog时,在使用LayoutInflater.from(context).inflate(layoutId,null)填充布局时,无论layoutId跟布局设置的宽高是多少,最后显示的都是包裹内容。

自定义Dialog布局宽高

  • 方法一:

设置dialog的window对象attribute属性(注意:这里必须放到dialog.show()之后,否则没效果)

final WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = 800;
params.height = 1200;
dialog.getWindow().setAttributes(params);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
  • 方法二:

layoutId布局增加一层跟布局,因为LayoutInflater.from(context).inflate(layoutId,null)会忽略layoutId根层的宽高,但是第二层布局的宽高有效果(根布局宽用wrap_content就可以了)

  • 方法三:

设置layoutId布局的minWidth/minHeight值, 虽然根布局的宽高不会生效,但是最小宽高值还是有作用的。 推荐使用

  • 方法四:

设置dialog的主题

    
    

layout 根布局的宽高属性都不会生效,最终宽度会由Dialog的style中的android:windowMinWidthMinor属性决定

  • 方法五:

使用DialogFragment/Activity替换自定义Dialog/AlertDialog。 推荐使用

总结
这是我目前能找到设置自定义Dialog的宽高方式,如果大家有什么更好的方法,欢迎大家指点。

你可能感兴趣的:(android)