因需求对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>
<!--是否浮现在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>
<!--是否浮现在activity之上-->
<item name="android:windowIsFloating">true</item>
<!--设置外边距(外面透明部分)距离限制其高度-->
<item name="android:layout_marginTop">100dp</item>
<item name="android:layout_marginBottom">100dp</item>
</style>
设置宽度
/**
* 设置对话框宽度
*/
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
}
}
/**
* 设置对话框宽度
*
* @param width 宽度
*/
fun setDialogWidth(width: Int) {
val window = dialog!!.window
//获得窗体的属性
if (window != null) {
val lp = window.attributes
lp.width = width
//将属性设置给窗体
window.attributes = lp
}
}
/**
* 设置对话框宽度
*
* @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
}
}
/**
* 设置对话框宽度
*
* @param window dialog 窗体
* @param width 宽度
*/
fun setDialogWidth(window: Window?, width: Int) {
//获得窗体的属性
if (window != null) {
val lp = window.attributes
lp.width = width
//将属性设置给窗体
window.attributes = lp
}
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...