1.如果要让圆角显示,首先设置dialog的style,代码如下:
<style name="custom_dialog2" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <!-- Dialog的windowFrame框为无 --> <item name="android:windowIsFloating">true</item> <!-- 是否漂现在activity上 --> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <!-- 是否半透明 --> <item name="android:background">@null</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <!-- 去除黑色边框的关键设置项 --> <item name="android:backgroundDimEnabled">true</item> <!-- 屏幕背景是否变暗 --> <item name="android:backgroundDimAmount">0.3</item> </style>
经测试android:windowNoTitle = false 这个属性会导致圆角失效,所以要设置为true,如果不设置mo默认false
2.如果想让布局宽度铺满屏幕,需要如下设置,kotln 代码:
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)); window?.setLayout( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT )
3.如果要底部弹窗,只需要设置动画即可,附赠代码如下:
window?.setWindowAnimations(R.style.dialog_bottom_animation)
<style name="dialog_bottom_animation" parent="android:Animation"> <item name="android:windowEnterAnimation">@anim/base_anim_dialog_bottom_enter</item> <item name="android:windowExitAnimation">@anim/base_anim_dialog_bottom_exit</item> </style>
入场动画base_anim_dialog_bottom_enter:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="true"> <translate android:duration="@integer/animation_default_duration" android:fromYDelta="100%p" android:interpolator="@android:interpolator/linear" android:toYDelta="0%p" /> </set>
出场动画base_anim_dialog_bottom_exit:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="true"> <translate android:duration="@integer/animation_default_duration" android:fromYDelta="0%p" android:interpolator="@android:interpolator/linear" android:toYDelta="100%p" /> </set>
ok,收工,希望能帮到你!