项目中需要将Dialog的宽度设置为屏幕宽度,并且在手机底部显示,从网上找了一些方法都不管用,最后自己通过看源码发现实际上只需要如下两步即可完成此功能。
- 在styles.xml中添加样式:
<style name="FullScreenDialogStyle" parent="android:Theme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
- 在构造Dialog时指定样式,并设置一些参数(Kotlin语言)
datePickerDialog = Dialog(context, R.style.FullScreenDialogStyle).apply {
setCancelable(false)
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.layout_widget_datepicker)
setCanceledOnTouchOutside(true)
//设置dialog在底部显示
window.setGravity(Gravity.BOTTOM)
//设置dialog宽度占满屏幕,高度包含内容
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
//因为我的dialog背景图片是圆弧型,不设置背景透明的话圆弧处显示黑色
window.setBackgroundDrawableResource(android.R.color.transparent)
}
效果如下: