微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android DialogFragment 不会在其外部进行录音

如何解决Android DialogFragment 不会在其外部进行录音

所以我有一个 DialogFragment,我希望它可以取消,问题是我需要将 match_parent 应用为宽度和高度才能在屏幕中查看格式良好的对话框,但是在外部单击时它不会关闭对话框

class informationDialogFragment : DialogFragment() {

    lateinit var viewState: informationDialogViewState

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setStyle(STYLE_norMAL,R.style.ModalTheme)
    }

    override fun onStart() {
        super.onStart()
        val dialog = dialog
        if (dialog != null) {
            val width = ViewGroup.LayoutParams.MATCH_PARENT
            val height = ViewGroup.LayoutParams.MATCH_PARENT
            dialog.window!!.setLayout(width,height)
        }
    }

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val dialog = Dialog(requireContext(),R.style.MyDialog)
        dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
        dialog.window?.requestFeature(Window.FEATURE_NO_TITLE)
        dialog.window?.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)
        return dialog
    }

    override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View {
        val binding: informationDialogBinding = DataBindingUtil.inflate(inflater,R.layout.account_information_dialog,container,false)
        binding.viewState = viewState
        return binding.root
    }
}

我不需要放 isCancelable,setCancelableOnTouch,setCancelable 因为认对话框本身是可取消的,我已经试过了

当我删除 onStart 代码时,外部触摸工作并关闭对话框,但对话框显示错误且垂直

解决方法

改变高度来包裹内容让我关闭对话框点击它外面

override fun onStart() {
        super.onStart()
        val dialog = dialog
        if (dialog != null) {
            val width = ViewGroup.LayoutParams.MATCH_PARENT
            val height = ViewGroup.LayoutParams.WRAP_CONTENT
            dialog.window!!.setLayout(width,height)
        }
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。