【问题标题】:How to show BottomSheetDialogFragment with left/right/bottom margin?如何显示带有左/右/下边距的 BottomSheetDialogFragment?
【发布时间】:2018-03-05 23:02:29
【问题描述】:

BottomSheetDialogFragment 以全屏宽度显示,并且没有下边距。我想设置左/右和下边距。

我知道我们可以使用BottomSheetBehaviour 并将其应用于我们布局中的View 对象。但是我想用BottomSheetDialogFragment

【问题讨论】:

    标签: android margin bottom-sheet


    【解决方案1】:

    您可能不应该有一个底部边距(为什么它不应该延伸到屏幕的底部?),但是您可以通过在 BottomSheetDialog 设置布局后修改布局来设置水平边距。该工作表加载名为 design_bottom_sheet_dialog.xml 的布局资源。如果您打开该文件,您可以看到工作表实际上已加载到带有 id=@+id/design_bottom_sheet 的 FrameLayout 中。由于设计资源已添加到您的应用中,因此您可以在代码中使用此库中的 ID。

    策略很简单,找到 FrameLayout,获取它的 LayoutParams,然后更改那里的边距。为此,将 BottomSheetDialogFragment 子类化以在下面添加覆盖。

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        val sheet: View? = dialog?.findViewById(R.id.design_bottom_sheet)
        val sheetLP = sheet?.layoutParams as? ViewGroup.MarginLayoutParams?
        sheetLP?.marginStart = this.resources.getDimensionPixelSize(R.dimen.bottomSheetHMargin) <-- your margin value dp
        sheetLP?.marginEnd = sheetLP!!.marginStart
    }
    

    注意,如果库更改布局文件,代码不会崩溃,但可能会停止工作。我已经在库的 1.2.1 上对此进行了测试。

    【讨论】:

      【解决方案2】:

      您可以拥有一个带有单个直系子女的上衣。现在在顶部布局中使用背景透明和填充,并且您的内容仅在布局中

      <RelativeLayout 
                  xmlns:android="http://schemas.android.com/apk/res/android"
                  xmlns:app="http://schemas.android.com/apk/res-auto"
                  android:id="@+id/parent_view"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:background="@color/transparent"
                  android:paddingLeft="20dp"
                  android:paddingRight="20dp"
                  android:paddingBottom="20dp">
         <FrameLayout>
            Content here
         </FrameLayout></RelativeLayout>
      

      为我工作。

      【讨论】:

        猜你喜欢
        • 2022-11-10
        • 2017-11-21
        • 2016-12-07
        • 1970-01-01
        • 1970-01-01
        • 2015-05-11
        • 2016-09-29
        • 1970-01-01
        • 2016-09-23
        相关资源
        最近更新 更多