如何点击AndroidX DialogFragment内部区域关闭弹窗?
解决DialogFragment点击内部区域关闭弹窗的问题
方案一:给弹窗根布局设置点击事件(最直观)
在DialogFragment的onCreateView方法中,直接给你inflated的根布局添加点击事件,触发时调用dismiss()关闭弹窗,代码示例如下:
override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val rootView = inflater.inflate(R.layout.your_dialog_fragment_layout, container, false) // 点击弹窗内部任意区域关闭弹窗 rootView.setOnClickListener { dismiss() } return rootView }
如果弹窗内部有子控件(比如文本、图标),不想让点击子控件时关闭弹窗,只需给这些子控件添加android:clickable="true"属性,这样点击子控件时事件会被消费,不会传递到根布局的点击事件,只有点击弹窗空白区域才会关闭。
补充说明
dialog!!.setCancelable(true)的作用是控制点击弹窗外部区域或按返回键时关闭弹窗,和点击内部区域无关,所以你之前设置这个没有效果是正常的。
内容的提问来源于stack exchange,提问作者Shimon Rothschild
相关产品推荐
相关产品推荐

