android - 如何显示具有左/右/下边距的 BottomSheetDialogFragment?

标签 android margin bottom-sheet

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

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

最佳答案

您可能不应该有底部边距(为什么它不应该延伸到屏幕底部?),但是您可以在由 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 上对此进行了测试。

关于android - 如何显示具有左/右/下边距的 BottomSheetDialogFragment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46397361/

相关文章:

android - Samsung Grand 中的媒体播放器套接字异常

android - cr_VariationsUtils : Failed reading seed file

Android EditText 复制我输入的每个字符

android - 地理编码器返回多个地址

html - float 右 div 上的左边距

html - DIV 内的边距

CSS:紧接在 H1 之后的 H2 的底边距

android - 键盘隐藏 BottomSheetDialogFragment

performance - Flutter 模态 Bottom Sheet 性能问题

flutter - 底板被键盘覆盖