package com.xscm.moduleutil.base import android.app.Dialog import android.content.DialogInterface import android.graphics.Color import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.Window import android.view.WindowManager import androidx.core.view.WindowCompat import androidx.databinding.DataBindingUtil import androidx.databinding.ViewDataBinding import androidx.fragment.app.DialogFragment import androidx.viewbinding.ViewBinding import com.voice.lib_base.ext.inflateBindingWithGeneric import com.xscm.moduleutil.R open class BaseFragmentDialog(private val resourceID: Int) : DialogFragment() { var mDatabind: B? = null val mBinding: B get() = mDatabind!! override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val dialog = Dialog(requireActivity(), R.style.myChooseDialog) dialog.requestWindowFeature(Window.FEATURE_NO_TITLE) mDatabind = DataBindingUtil.inflate(LayoutInflater.from(requireContext()), resourceID, null, false) as B dialog.setContentView(mDatabind!!.root) val window = dialog.window val params = window!!.attributes params.width = WindowManager.LayoutParams.MATCH_PARENT params.height = WindowManager.LayoutParams.WRAP_CONTENT window.attributes = params dialog.setCanceledOnTouchOutside(true) return dialog } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { mDatabind = inflateBindingWithGeneric(inflater, container, false) return if (mBinding != null) mBinding!!.root else null } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) WindowCompat.setDecorFitsSystemWindows(requireDialog().window!!, false) requireDialog().setOnShowListener { dialog: DialogInterface? -> (view.parent as ViewGroup).setBackgroundColor( Color.TRANSPARENT ) } } override fun onDestroyView() { super.onDestroyView() mDatabind = null } fun setBundleArgs(bundleArgs: Bundle?): BaseFragmentDialog { arguments = bundleArgs return this } }