因需求對Dialog對話框高度自適應,限制上下邊距和設置寬度
高度自適應
1、XML控制設置
只要包裹需要高度自適應的控件全部把 layout_height 設置為 wrap_content
2、樣式設置
<!--對話框背景半透明-->
<style name="DialogBgTranslucentStyle" parent="Theme.AppCompat.Light.NoActionBar">
<!-- 背景透明 -->
<item name="android:windowBackground">@android:color/transparent</item>
<!-- 半透明 -->
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<!--是否浮現(xiàn)在activity之上-->
<item name="android:windowIsFloating">true</item>
<!--設置外邊距(外面半透明部分)距離限制其高度-->
<item name="android:layout_marginTop">100dp</item>
<item name="android:layout_marginBottom">100dp</item>
</style>
<!--對話框背景透明-->
<style name="DialogBgTransparentStyle" parent="Theme.AppCompat.Light.NoActionBar">
<!-- 背景透明 -->
<item name="android:windowBackground">@android:color/transparent</item>
<!-- 半透明 -->
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:backgroundDimEnabled">false</item>
<!--是否浮現(xiàn)在activity之上-->
<item name="android:windowIsFloating">true</item>
<!--設置外邊距(外面透明部分)距離限制其高度-->
<item name="android:layout_marginTop">100dp</item>
<item name="android:layout_marginBottom">100dp</item>
</style>
設置寬度
/**
* 設置對話框?qū)挾? */
fun setDialogWidth() {
val window = dialog!!.window
//獲得窗體的屬性
if (window != null) {
val lp = window.attributes
lp.width = ScreenUtils.getScreenWidth(requireContext())
lp.width = lp.width - (lp.width / 6)
//將屬性設置給窗體
window.attributes = lp
}
}
/**
* 設置對話框?qū)挾? *
* @param width 寬度
*/
fun setDialogWidth(width: Int) {
val window = dialog!!.window
//獲得窗體的屬性
if (window != null) {
val lp = window.attributes
lp.width = width
//將屬性設置給窗體
window.attributes = lp
}
}
/**
* 設置對話框?qū)挾? *
* @param window dialog 窗體
* @param context 上下文
*/
fun setDialogWidth(window: Window?, context: Context?) {
//獲得窗體的屬性
if (window != null) {
val lp = window.attributes
lp.width = ScreenUtils.getScreenWidth(context)
lp.width = lp.width - (lp.width / 6)
//將屬性設置給窗體
window.attributes = lp
}
}
/**
* 設置對話框?qū)挾? *
* @param window dialog 窗體
* @param width 寬度
*/
fun setDialogWidth(window: Window?, width: Int) {
//獲得窗體的屬性
if (window != null) {
val lp = window.attributes
lp.width = width
//將屬性設置給窗體
window.attributes = lp
}
}