【问题标题】:Android BottomSheet adapt/shrink related map viewAndroid BottomSheet 适配/收缩相关地图视图
【发布时间】:2018-01-22 12:22:13
【问题描述】:

试图在底部模仿当前的谷歌地图栏。 我失败了,尝试了很多; CollapsingToolbar、BottomSheet、自定义库。

我想要什么:让地图视图在底部表滑动时适应它的大小和相机,这样底部表就不会在地图上滑动,而是地图适合离开了。

看看this video 看看我的意思(我不是指缩放功能)

【问题讨论】:

  • 您找到解决方案了吗?
  • 是的,我使用 BottomSheet 来滑动、展开和折叠我的内容,并将地图保留在后面。为了调整地图(大小和相机居中),我在 BottomSheets onSlide 及其 onStateChanged 中放置了一些代码。两者都可以通过相应地调整地图填充来完成。它看起来又光滑又酷;-)
  • 能分享一下地图和底页滑动的sn-p吗?
  • @ralphgabb 查看下面的完整答案。
  • @EssenceBlue 会尝试的。谢谢。

标签: android google-maps-android-api-2 android-coordinatorlayout android-collapsingtoolbarlayout bottom-sheet


【解决方案1】:

我使用的BottomBar library 已弃用。但也许我的代码让你知道如何做到这一点。

我对 BottomSheet 的 onSlide 事件的反应是这样的:

@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
    switch (bssBehavior.getState()) {
        case BottomSheetBehavior.STATE_DRAGGING:
            setMapPaddingBotttom(slideOffset);
            searchVM.map.moveCamera(CameraUpdateFactory.newLatLng(lastValidMapCenter));
            break;
        case BottomSheetBehavior.STATE_SETTLING:
            setMapPaddingBotttom(slideOffset);
            searchVM.map.moveCamera(CameraUpdateFactory.newLatLng(lastValidMapCenter));
            break;
        case BottomSheetBehavior.STATE_HIDDEN:
            break;
        case BottomSheetBehavior.STATE_EXPANDED:
            break;
        case BottomSheetBehavior.STATE_COLLAPSED:
            break;
    }

并通过更改填充来平滑调整地图的大小。为了相应地计算它,我使用了 sth。像这样。

private void setMapPaddingBotttom(Float offset) {
    //From 0.0 (min) - 1.0 (max)
    Float maxMapPaddingBottom = bsExpanded - bsCollapsed;
    //left,top,right,bottom
    searchVM.map.setPadding(0, 0, 0, Math.round(offset * maxMapPaddingBottom));
}

【讨论】:

  • bsExpanded - bsCollapsed 的变量是什么??
  • maxMapPaddingBottom 是地图填充的最大高度(以像素为单位),因此通过将其乘以百分比偏移量,您可以获得相应的像素值。 bsExpanded 是底部工作表展开时的高度(以像素为单位), bsCollapsed 是折叠时的大小,仅显示一个细条,例如一些按钮或任何表明您可以向上滑动以展开它的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2017-10-27
  • 2021-12-29
相关资源
最近更新 更多