尝试模仿底部的当前谷歌地图栏。 我失败了,尝试了这么多; CollapsingToolbar,BottomSheet,自定义库。
我想要的是什么:当BottomSheet滑动时,使地图视图调整其大小和相机,这样底部工作表不会在地图上滑动,而是地图适合于空间左
看看this video看看我的意思(我不是指缩放功能)
答案 0 :(得分:0)
我不推荐使用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;
}
并通过更改其填充平滑调整地图的大小。为了进行相应的计算,我使用了某物。这样。
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));
}