更新:去掉DialogFragment的默认背景,宽高、样式由布局文件决定。
BaseDialogFragment.kt

package com.miemie.indonesiafinance.base

import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.Window
import androidx.fragment.app.DialogFragment

/**
 * @Date: 2021/9/17 16:28
 * @Description:去掉默认背景的DialogFragment
 */
abstract class BaseDialogFragment : DialogFragment() {

    /**
     * 返回布局View
     */
    abstract fun getLayoutView(inflater: LayoutInflater, container: ViewGroup?,
                               savedInstanceState: Bundle?): View

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        dialog?.apply {
            requestWindowFeature(Window.FEATURE_NO_TITLE)
            window?.apply {
                //去掉DialogFragment内部的背景色
                setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
                //去掉Padding
                decorView.setPadding(0,0,0,0)
            }
        }
        return getLayoutView(inflater,container,savedInstanceState)
    }
}

===========================================================================

  1. DialogFragment自定义宽高

在这里插入图片描述

在onStart()里面设置宽高

class OrderRefundDialog : DialogFragment() {

    override fun onStart() {
        super.onStart()
        val dialog = dialog
        if (dialog != null) {
            val metrics = resources.displayMetrics
            //宽度设为屏幕宽度的90%
            dialog.window?.setLayout( (metrics.widthPixels * 0.9).toInt(), ViewGroup.LayoutParams.WRAP_CONTENT)
        }
    }
}    
  1. BottomSheetDialogFragment设置圆角

在这里插入图片描述

在onCreate()里面设置透明style

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setStyle(DialogFragment.STYLE_NORMAL,R.style.TransBgBottomSheet)
    }

styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="TransBgBottomSheet" parent="Theme.MaterialComponents.Light.BottomSheetDialog">
        <item name="bottomSheetStyle">@style/AppBottomSheetStyle</item>
    </style>

    <style name="AppBottomSheetStyle" parent="Widget.MaterialComponents.BottomSheet.Modal">
        <item name="backgroundTint">@color/color_transparent</item>//<color name="color_transparent">#00000000</color>
    </style>
</resources>

根布局设置圆角background

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/colorWhite"/>
    <corners android:topLeftRadius="20dp"
        android:topRightRadius="20dp"/>
</shape>

更多推荐