【问题标题】:Bottom sheet margin top not working correctly - Android底部页边距顶部无法正常工作 - Android
【发布时间】:2017-10-13 19:36:28
【问题描述】:

我正在使用底部工作表,如果我不添加顶部边距,它会很好用。

我希望底部工作表在拉起时填满屏幕,但它也位于操作栏的后面。
为了解决这个问题,我在底部工作表中添加了与操作栏高度相等的边距顶部,它在底部栏回到底部之前效果很好。

<RelativeLayout
    android:id="@+id/rl_bottom_sheet"
    android:layout_width="match_parent"
    android:layout_height="280dp"
    android:margin_top="60dp"
    app:behavior_peekHeight="80dp"
    app:behavior_hideable="false"
    app:layout_behavior="@string/bottom_sheet_behavior"
    android:background="@drawable/ic_camera">

当底部页面向下滑动时,边距不再存在,屏幕上方的视图等于 peekHeight + marginTop

展开前

展开一次后折叠

【问题讨论】:

  • 请把你想达到的形象放上去
  • @AbhijitChakra 添加了照片
  • 好像是bug,我要报告了。
  • 您找到解决方案了吗?

标签: android xml material-design bottom-sheet material-components-android


【解决方案1】:

一种选择是使用Toolbar 而不是在BottomSheet 中添加边距。您可以将它放在顶部的CoordinatorLayout 中,这样它就位于BottomSheet 的后面。确保具有BottomSheetBehavior 的视图位于布局的底部,并且它的高度高于Toolbar

【讨论】:

  • 这样,bottomSheet会越过工具栏,要求在工具栏下方
【解决方案2】:

我可以建议您更改根布局 - 从 CoordinatorLayout 到任何其他(相对/线性等)。之后,您可以将 CoordinatorLayout 添加到具有所需 marginTop 的新根 ViewGroup 中。

android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="80dp"

【讨论】: