首先,先来两个图
设置了列表最大高度的效果
设置了列表最小高度的效果
 {
super.onCreate(savedInstanceState);
setStyle(STYLE_NO_TITLE, R.style.fullScreenDialogStyle)
}
override fun onStart() {
super.onStart()
dialog?.window?.apply {
setWindowAnimations(R.style.DownToUp)
attributes = attributes.apply {
width = ViewGroup.LayoutParams.MATCH_PARENT
//这里一定设置成全屏,并且配合Styele把dialogFragment设置成全屏无标题
height = ViewGroup.LayoutParams.MATCH_PARENT
//如果需要状态栏显示的,则不使用Style,并且动态设置height
//如果不动态设置,这里会出现状态栏黑色的问题
//动态设置了全屏高度会有一个小问题,布局中的View会向下偏移大概50dp的高度
//这里需要自行调整xml中View的距离底部的高度
//height = ConverScreenUtil.getScreenHeight()
gravity = Gravity.BOTTOM
}
}
}
<style name="fullScreenDialogStyle" parent="android:style/Theme.Dialog">
<!--我这里设置了Dialog的全屏无标题,不显示状态栏-->
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
如果出现了DilaogFragment闪屏的问题,可以参考以下代码
@CallSuper
@Override
public void onStart() {
Dialog dialog = getDialog();
Window window = null;
if (dialog != null) {
window = dialog.getWindow();
if (window != null) {
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
window.setFlags(
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
);
}
}
super.onStart();
if (window != null) {
window.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
}
}
Over,完毕!