window?.let { window ->
window.setBackgroundDrawableResource(android.R.color.transparent)
window.attributes?.let { params ->
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
window.attributes = params
}
}
这里,WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
将允许对话框外的事件被发送到后面的视图,而WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
将允许对话框在被触摸时接收到外部的触摸事件。这样设置后,用户就可以点击和操作Dialog下面的视图了。
注意,你可能需要处理这个Dialog的点击事件,以便当用户点击到Dialog时,不会触发到后面的视图的点击事件。你可以为Dialog的视图设置一个空的点击事件监听器,像这样:
view.setOnClickListener {
// Do nothing, just consume the event.
}
这样设置后,当用户点击到Dialog的视图时,事件就会被消费,而不会传递到后面的视图。