我有一个BottomSheetDialogFragment
,上面有一些内容,底部有一个蓝色按钮(TextView
)。我希望它始终固定在BottomSheetDialogFragment
的底部,但我却无法这样做。大多数情况下,它位于正确的位置,但有时它似乎位于下方,像这样下面的屏幕截图:
无论如何,如何确保蓝色按钮始终固定在BottomSheetDialogFragment
的底部?根视图是RelativeLayout
,当我尝试设置android:layout_alignParentBottom="true"
时,它没有解决问题。
答案 0 :(得分:1)
只是一个黑客
问题解决了。 :)
答案 1 :(得分:1)
因此,我发现了2个可能的解决方案,因此,在这里分享它们。
第一个解决方案是使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_alignParentBottom="true"
。这样可以将BottomSheetDialogFragment
展开(到全屏显示)时,按钮始终在屏幕底部对齐。
另一种解决方案(我认为是正确的解决方案)是将BottomSheetDialogFragment
布局的所有内容包含在ScrollView
内。这样,如果设备的高度不足,则将定位内容(包括按钮),但可以随时滚动至该位置。