我正在尝试从视频列表中启动BottomSheetDialogFragment,一旦打开,将播放视频,但是我想允许用户在BottomSheetDialogFragment打开时从列表中选择其他视频。
我尝试过的事情:
<style name="CustomBottomSheetDialogTheme" parent="Theme.Design.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/CustomBottomSheetStyle</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:colorBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:backgroundDimAmount">0</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
</style>
<style name="CustomBottomSheetStyle" parent="Widget.Design.BottomSheet.Modal">
<item name="android:background">@android:color/transparent</item>
</style>
和:
@SuppressLint("RestrictedApi")
override fun setupDialog(dialog: Dialog?, style: Int) {
super.setupDialog(dialog, style)
dialog?.window?.setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
dialog?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
dialog?.setCanceledOnTouchOutside(false)
dialog?.setCancelable(false)
}
以上所有内容都可以在DialogFragment中使用,但不能在BottomSheetDialogFragment中使用。
答案 0 :(得分:1)
我认为您想念的东西如下所示;将其添加到您的 dialog.setOnShowListener
it.findViewById<View>(R.id.touch_outside)?.apply {
setOnTouchListener { v, event ->
event.setLocation(event.rawX - v.x, event.rawY - v.y)
activity?.dispatchTouchEvent(event)
false
}
}
坐标变化是必要的,因为这个模式在不同的装饰视图中。否则,点击可能会在不同的地方。
但是,当您后面有一些输入字段时会出现问题 - 直到现在我还没有设法正确显示键盘;我添加了窗口标志 FLAG_NOT_FOCUSABLE
但它仍然在模态下显示键盘(不是下面,模态覆盖键盘)。