gpt4 book ai didi

android - BottomSheetDialogFragment 允许用户触摸外部

转载 作者:行者123 更新时间:2023-12-04 17:40:20 25 4
gpt4 key购买 nike

我正在尝试从视频列表中启动 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 中无效。

最佳答案

我想你想念的是下面这样的东西;将其添加到您的 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
}
}

坐标更改是必要的,因为此模态处于不同的装饰 View 中。否则,点击可能在不同的地方。但是,当您后面有一些输入字段时会出现问题 - 直到现在我还没有设法正确显示键盘;我添加了窗口标志 FLAG_NOT_FOCUSABLE 但它仍然在模态下显示键盘(不是在下方,模态覆盖键盘)。

关于android - BottomSheetDialogFragment 允许用户触摸外部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54798186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com