Android 设置 DialogFragment 的宽度

2021-07-14  本文已影响0人  _发强

Android Dialog Fragment 必须要实现 onCreateDialog 或者 onCreateView 其中一个方法,

在 onCreateView 中就是通过日常的 Fragment 写法,去设置布局,
在 onCreateDialog 中就是要实现一个 Dialog了:

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        return activity?.let {

            val builder = AlertDialog.Builder(it)
            val inflater = requireActivity().layoutInflater
            val layout = inflater.inflate(R.layout.dialog_xxxx, null, false)
            builder.setView(layout)

           
            builder.create()
        } ?: throw Throwable("Activity cannot be null")
    }

如果需要设置 Dialog 的宽度或者背景,可通过以下代码来实现:

override fun onStart() {
        super.onStart()
        val dialog = dialog
        if (dialog != null) {
            val dm = DisplayMetrics()
            activity?.windowManager?.defaultDisplay?.getMetrics(dm)
            dialog.window?.let {
                it.setLayout((dm.widthPixels * 0.8).toInt(), ViewGroup.LayoutParams.WRAP_CONTENT)
                it.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
            }
        }
    }
上一篇下一篇

猜你喜欢

热点阅读