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))
}
}
}
网友评论