首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何禁用BottomSheetDialogFragment拖动

如何禁用BottomSheetDialogFragment拖动
EN

Stack Overflow用户
提问于 2017-10-21 08:04:27
回答 16查看 35.2K关注 0票数 34

如何用手指禁用BottomSheetDialogFragment拖动?

我看到了类似的问题,但它们都是关于BottomSheet而不是BottomSheetDialogFragment的。

EN

回答 16

Stack Overflow用户

发布于 2020-08-12 11:13:19

在发布材料设计1.2.0之后,有一种更简单的方法来实现同样的目标。

https://developer.android.com/reference/com/google/android/material/bottomsheet/BottomSheetBehavior#setdraggable

BottomSheetDialogFragment调用时

代码语言:javascript
复制
    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val bottomSheetDialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog
        bottomSheetDialog.setOnShowListener {
            val bottomSheet = bottomSheetDialog
                .findViewById<FrameLayout>(com.google.android.material.R.id.design_bottom_sheet)

            if (bottomSheet != null) {
                val behavior: BottomSheetBehavior<*> = BottomSheetBehavior.from(bottomSheet)
                behavior.isDraggable = false
            }
        }
        return bottomSheetDialog
    }

或造型:

代码语言:javascript
复制
    <style name="SomeStyle" parent="Theme.MaterialComponents.Light.BottomSheetDialog">
        <item name="behavior_draggable">false</item>
    </style>

然后在对话框片段的onCreate中:

代码语言:javascript
复制
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setStyle(DialogFragment.STYLE_NORMAL, R.style.SomeStyle)
    }
票数 38
EN

Stack Overflow用户

发布于 2020-02-27 11:06:17

为时已晚,但值得分享。

代码语言:javascript
复制
  behavior.setDraggable(false)

这一行完成了任务。

票数 14
EN

Stack Overflow用户

发布于 2018-01-06 07:14:36

如果要禁用BottomSheetDialog拖动,请尝试设置setCancelable(false)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46861306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档