Android 弹出对话框Dialog充满屏幕宽度

时间:2024-04-16 08:59:48

final View view = LayoutInflater.from(context).inflate(layoutId, null);

final Dialog dialog = new Dialog(context, R.style.style_dialog);
dialog.setContentView(view);
dialog.show();

Window window = dialog.getWindow();
window.setGravity(Gravity.BOTTOM);
window.setWindowAnimations(R.style.dialog_animation);
window.getDecorView().setPadding(0, 0, 0, 0);

WindowManager.LayoutParams lp = window.getAttributes();
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
window.setAttributes(lp);

style_dialog

<style name="style_dialog" parent="android:style/Theme.Dialog">
    <item name="android:windowBackground">@color/white</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:scrollHorizontally">true</item>
    </style>

dialog_animation:

<style name="dialog_animation">  
<item name="android:windowEnterAnimation">@anim/enter</item>   
<item name="android:windowExitAnimation">@anim/exit</item>   
</style>

enter:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >
    
    <translate 
        android:fromYDelta="100%p"
        android:toYDelta="0"
        android:duration="300"/>
</set>

exit:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >
    
    <translate 
        android:fromYDelta="0"
        android:toYDelta="100%p"
        android:duration="600"/>
</set>

 重要!!!

View view = LayoutInflater.from(this).inflate(R.layout.mine_phone_unbind, null);

                    AlertDialog.Builder builder = new AlertDialog.Builder(this,R.style.DialogTheme);
                    builder.setView(view);
                    final AlertDialog dialog = builder.create();
                    Window window = dialog.getWindow();
                    window.setGravity(Gravity.BOTTOM);
                    window.setWindowAnimations(R.style.dialog_animation);
                    window.getDecorView().setPadding(0, 0, 0, 0);
                    WindowManager.LayoutParams lp = window.getAttributes();
                    lp.width = WindowManager.LayoutParams.MATCH_PARENT;
                    lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
                    window.setAttributes(lp);

                    dialog.show();
<style name="DialogTheme" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>移除边框
        <item name="android:windowNoTitle">true</item>去除顶部标题栏
        <item name="android:windowIsTranslucent">true</item>窗体透明
        <item name="android:background">@android:color/white</item>背景透明
        <item name="android:windowBackground">@android:color/transparent</item>窗体背景透明
        <item name="android:windowIsFloating">false</item>窗体是否浮动
        <item name="android:backgroundDimEnabled">true</item>背景是否昏暗
        <item name="android:backgroundDimAmount">0.6</item>昏暗数量
    </style>

欢迎关注我的微信公众号:安卓圈