BottomSheetDialogFragment
显示为全屏宽度,没有底边距。我想设置左/右和下边距。
我知道我们可以使用BottomSheetBehaviour
并将其应用于我们布局中的View
对象。但我想使用BottomSheetDialogFragment
答案 0 :(得分:0)
你可以拥有一个顶级单身直接孩子。现在在顶部布局中使用背景透明和填充,并将您的内容仅在布局
中<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>
适合我。
答案 1 :(得分:0)
您可能不应该有底部边距(为什么不应该将其扩展到屏幕底部?),但是一旦由 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 上对此进行了测试。