69 lines
2.3 KiB
Kotlin
69 lines
2.3 KiB
Kotlin
package com.voice.lib_base.base.dialog
|
|
|
|
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<B : ViewBinding?>(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<ViewDataBinding>(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<B> {
|
|
arguments = bundleArgs
|
|
return this
|
|
}
|
|
}
|