具有底部粘滞按钮的BottomSheetDialogFragment

Tan*_*y C 7 android bottom-sheet

我在显示按钮时遇到一些麻烦BottomSheetDialogFragment。无论它是展开还是折叠,我都希望它粘在我底部的底部。

见下图:

我想做的事

(我用素描来创建)

有技巧或窍门吗?

以防万一,如果您知道如何在上增加最高利润bottomsheetdialog,我也想知道这一点;)

Xia*_*wei 5

谢谢,@Gnocalo,发帖。我已经实现了,请在我的github中找到它

脚步:

  • 找到parent视图BottomSheetDialogFragment
  • 膨胀您的自定义视图并将其附加到parent视图
  • 调整底部工作表的边距以避免视图覆盖

在此处输入图片说明


Gon*_*par 2

我解决这个问题的方法如下:

  1. 实现 BottomSheetDialogFragment
  2. 覆盖 onCreateDialog
  3. 获取 BottomSheetDialog 的引用并设置 onShowListener
  4. 从我的布局中删除按钮并将其添加到 R.id.container (当然,您可以通过编程方式创建自己的按钮,我这样做是为了更轻松地格式化按钮视图)。这样您的按钮将位于 R.id.design.bottom.sheet 上方,因为 R.id.container 是它的父级!

示例代码如下:

    val bottomSheetDialog = super.onCreateDialog(savedInstanceState) as BottomSheetDialog
    bottomSheetDialog.setOnShowListener {
        val dialog = it as BottomSheetDialog

            dialog.findViewById<FrameLayout>(com.google.android.material.R.id.design_bottom_sheet) as FrameLayout
        val containerLayout: FrameLayout =
            dialog.findViewById<FrameLayout>(com.google.android.material.R.id.container) as FrameLayout
        val button = binding.submitButton
        val parent = button.parent as ViewGroup
        parent.removeView(button)
        containerLayout.addView(button, containerLayout.childCount)
    }
    return bottomSheetDialog
Run Code Online (Sandbox Code Playgroud)

这样,您的底部工作表将正常响应触摸,并且按钮将保留在父级工作表上的位置。

如果您有任何疑问,请随时询问。

编辑

不要忘记定义布局参数/将按钮定位在 R.id.container 的底部