Android 在BottomSheetDialogFragment中排列布局,以便所有视图都符合预期

Android 在BottomSheetDialogFragment中排列布局,以便所有视图都符合预期,android,layout,bottom-sheet,Android,Layout,Bottom Sheet,我有一个BottomSheetDialogFragment,它有一些内容,底部有一个蓝色按钮(TextView)。我希望它总是锚定在底部SheetDialogFragment的底部,但我无法这样做。。大多数时候它都在正确的位置,但有时它看起来有点像下面的屏幕截图: 如何确保蓝色按钮始终固定在BottomSheetDialogFragment的底部?根视图是RelativeLayout,当我尝试设置android:layout\u alignParentBottom=“true”,但没有成功。只

我有一个
BottomSheetDialogFragment
,它有一些内容,底部有一个蓝色按钮(
TextView
)。我希望它总是锚定在
底部SheetDialogFragment
的底部,但我无法这样做。。大多数时候它都在正确的位置,但有时它看起来有点像下面的屏幕截图:

如何确保蓝色按钮始终固定在
BottomSheetDialogFragment
的底部?根视图是
RelativeLayout
,当我尝试设置
android:layout\u alignParentBottom=“true”
,但没有成功。

只是一个小问题

  • 将底部按钮放在活动/片段中(底部工作表的父级)
  • 使其在底部板材可见时可见
  • 将按钮高度等边距放在底板底部。(按钮不能重叠)
  • 当底页关闭时,使按钮不可见

问题已解决。:)

因此,我找到了解决这个问题的两种可能的方法,因此我在这里分享它们

第一种解决方案是将
BottomSheetDialogFragment
扩展到全屏,下面是一个示例:

View parent = (View) view.getParent();
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) (parent).getLayoutParams();
CoordinatorLayout.Behavior behavior = params.getBehavior();
BottomSheetBehavior bottomSheetBehavior = (BottomSheetBehavior) behavior;
bottomSheetBehavior.setPeekHeight(view.getMeasuredHeight());
然后,我们调整按钮在
BottomSheetDialogFragment
布局中的位置,例如,如果我们有
RelativeLayout
,我们可以设置
android:layout\u alignParentBottom=“true”
。这将使我们的按钮在
BottomSheetDialogFragment
展开(全屏)时始终与屏幕底部对齐


另一个解决方案,我认为是正确的解决方案是将
BottomSheetDialogFragment
布局的所有内容包含在
滚动视图
中。这样,如果设备的高度不够,内容(包括按钮)将被定位,但可以随时滚动到。

我想到了这个解决方案,但按钮不会与底板一起向上滑动,它将具有其他外观行为。.我考虑到了您的要求,我不明白。因为按钮应该在底部打开时出现,但不应该在底部打开时出现,这怎么可能呢,我感到困惑。它应该在底部打开时出现,但当底部完全打开时,它应该在屏幕上的正确位置。。但在图片上你可以看到,它比预期的位置低了一点。它是否能像预期的那样工作,这个浮动在屏幕上直到底部被打开(在打开/关闭时)?我找到了两个可能的解决方案,我将使用第二个。我把它们写下来作为对这个问题的回答。谢谢你的关注!