diff --git a/android/src/app/organicmaps/widget/placepage/PlacePageController.java b/android/src/app/organicmaps/widget/placepage/PlacePageController.java index e3b15a7eb7..531fb3041e 100644 --- a/android/src/app/organicmaps/widget/placepage/PlacePageController.java +++ b/android/src/app/organicmaps/widget/placepage/PlacePageController.java @@ -81,7 +81,7 @@ public class PlacePageController extends Fragment implements if (PlacePageUtils.isSettlingState(newState) || PlacePageUtils.isDraggingState(newState)) return; - PlacePageUtils.moveViewportUp(mPlacePage, mViewportMinHeight); + PlacePageUtils.updateMapViewport(mCoordinator, mDistanceToTop, mViewportMinHeight); if (PlacePageUtils.isHiddenState(newState)) onHiddenInternal(); @@ -165,7 +165,7 @@ public class PlacePageController extends Fragment implements private void onHiddenInternal() { Framework.nativeDeactivatePopup(); - PlacePageUtils.moveViewportUp(mPlacePage, mViewportMinHeight); + PlacePageUtils.updateMapViewport(mCoordinator, mDistanceToTop, mViewportMinHeight); resetPlacePageHeightBounds(); removePlacePageFragments(); } @@ -281,7 +281,7 @@ public class PlacePageController extends Fragment implements mViewModel.setPlacePageDistanceToTop(mDistanceToTop); if (value == peekHeight) { - PlacePageUtils.moveViewportUp(mPlacePage, mViewportMinHeight); + PlacePageUtils.updateMapViewport(mCoordinator, mDistanceToTop, mViewportMinHeight); setPlacePageHeightBounds(); } }); diff --git a/android/src/app/organicmaps/widget/placepage/PlacePageUtils.java b/android/src/app/organicmaps/widget/placepage/PlacePageUtils.java index 6c758d1c36..2375a3db53 100644 --- a/android/src/app/organicmaps/widget/placepage/PlacePageUtils.java +++ b/android/src/app/organicmaps/widget/placepage/PlacePageUtils.java @@ -1,10 +1,8 @@ package app.organicmaps.widget.placepage; import android.content.Context; -import android.graphics.Rect; import android.view.Menu; import android.view.View; -import android.view.ViewGroup; import android.widget.PopupMenu; import androidx.annotation.NonNull; @@ -17,18 +15,12 @@ import java.util.List; public class PlacePageUtils { - static void moveViewportUp(@NonNull View placePageView, int viewportMinHeight) + static void updateMapViewport(@NonNull View parent, int placePageDistanceToTop, int viewportMinHeight) { - placePageView.post(() -> { - final View coordinatorLayout = (ViewGroup) placePageView.getParent(); - final int viewPortWidth = coordinatorLayout.getWidth(); - int viewPortHeight = coordinatorLayout.getHeight(); - Rect sheetRect = new Rect(); - placePageView.getGlobalVisibleRect(sheetRect); - - viewPortHeight -= sheetRect.height(); - if (viewPortHeight >= viewportMinHeight) - Framework.nativeSetVisibleRect(0, 0, viewPortWidth, viewPortHeight); + parent.post(() -> { + final int screenWidth = parent.getWidth(); + if (placePageDistanceToTop >= viewportMinHeight) + Framework.nativeSetVisibleRect(0, 0, screenWidth, placePageDistanceToTop); }); }