DialogFragment的扩展BottomSheetDialogFragment据需求常见修改

2,204 阅读1分钟

1.设置透明背景(BottomSheetDialogFragment自带白色背景)

默认方法

@Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new BottomSheetDialog(getContext(), getTheme());
    }

重写该方法

 @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new BottomSheetDialog(getContext(), R.style.translucent);
    }

要设置的透明样式

 <style name="translucent" parent="Theme.AppCompat.DayNight.Dialog">
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:windowIsTranslucent">true</item>
    </style>

2.修改Dialog的宽度(默认百分之百的填充)

@Override
    public void onStart() {
        super.onStart();
        WindowManager windowManager = getActivity().getWindowManager();

        Display display = windowManager.getDefaultDisplay();
        WindowManager.LayoutParams lp = getDialog().getWindow().getAttributes();
        //关键
        lp.width = (int) (display.getWidth() * 0.5);
        lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
        
        getDialog().getWindow().setAttributes(lp);
    }