diff --git a/android/app/src/main/java/app/organicmaps/MwmActivity.java b/android/app/src/main/java/app/organicmaps/MwmActivity.java
index 6ce8120e12..f395640e86 100644
--- a/android/app/src/main/java/app/organicmaps/MwmActivity.java
+++ b/android/app/src/main/java/app/organicmaps/MwmActivity.java
@@ -829,7 +829,11 @@ public class MwmActivity extends BaseMwmFragmentActivity
private void initMainMenu()
{
- mMainMenu = new MainMenu(findViewById(R.id.menu_frame), this::updateBottomWidgetsOffset);
+ final View menuFrame = findViewById(R.id.menu_frame);
+ mMainMenu = new MainMenu(menuFrame, () -> {
+ this.updateBottomWidgetsOffset();
+ mPlacePageViewModel.setPlacePageDistanceToTop(menuFrame.getTop());
+ });
if (mIsTabletLayout)
{
diff --git a/android/app/src/main/java/app/organicmaps/routing/RoutingBottomMenuController.java b/android/app/src/main/java/app/organicmaps/routing/RoutingBottomMenuController.java
index 8557fc7060..1983a93299 100644
--- a/android/app/src/main/java/app/organicmaps/routing/RoutingBottomMenuController.java
+++ b/android/app/src/main/java/app/organicmaps/routing/RoutingBottomMenuController.java
@@ -19,6 +19,7 @@ import android.text.style.TypefaceSpan;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
+import android.widget.ScrollView;
import android.widget.TextView;
import androidx.annotation.IdRes;
@@ -32,11 +33,11 @@ import app.organicmaps.R;
import app.organicmaps.bookmarks.data.DistanceAndAzimut;
import app.organicmaps.location.LocationHelper;
import app.organicmaps.util.Distance;
-import app.organicmaps.widget.recycler.DotDividerItemDecoration;
-import app.organicmaps.widget.recycler.MultilineLayoutManager;
import app.organicmaps.util.Graphics;
import app.organicmaps.util.ThemeUtils;
import app.organicmaps.util.UiUtils;
+import app.organicmaps.widget.recycler.DotDividerItemDecoration;
+import app.organicmaps.widget.recycler.MultilineLayoutManager;
import java.util.LinkedList;
import java.util.List;
@@ -183,6 +184,8 @@ final class RoutingBottomMenuController implements View.OnClickListener
rv.setAdapter(adapter);
adapter.setItems(info.getTransitSteps());
+ scrollToBottom(rv);
+
TextView totalTimeView = mTransitFrame.findViewById(R.id.total_time);
totalTimeView.setText(RoutingController.formatRoutingTime(mContext, info.getTotalTime(),
R.dimen.text_size_routing_number));
@@ -210,6 +213,8 @@ final class RoutingBottomMenuController implements View.OnClickListener
rv.addItemDecoration(mTransitViewDecorator);
rv.setAdapter(adapter);
adapter.setItems(pointsToRulerSteps(points));
+
+ scrollToBottom(rv);
}
else
UiUtils.hide(rv); // Show only distance between start and finish
@@ -373,6 +378,14 @@ final class RoutingBottomMenuController implements View.OnClickListener
}
}
+ // Scroll RecyclerView to bottom using parent ScrollView.
+ private static void scrollToBottom(RecyclerView rv)
+ {
+ final ScrollView parentScroll = (ScrollView) rv.getParent();
+ if (parentScroll != null)
+ parentScroll.postDelayed(() -> parentScroll.fullScroll(ScrollView.FOCUS_DOWN), 100);
+ }
+
@NonNull
private static Spanned makeSpannedRoutingDetails(@NonNull Context context, @NonNull RoutingInfo routingInfo)
diff --git a/android/app/src/main/res/layout/routing_bottom_panel_transit.xml b/android/app/src/main/res/layout/routing_bottom_panel_transit.xml
index cce2c490be..24206dc143 100644
--- a/android/app/src/main/res/layout/routing_bottom_panel_transit.xml
+++ b/android/app/src/main/res/layout/routing_bottom_panel_transit.xml
@@ -1,5 +1,5 @@
-
-
-
+ android:layout_height="wrap_content"
+ app:layout_constraintHeight_max="150dp"
+ android:layout_marginTop="@dimen/margin_half_plus"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/total_time"
+ android:scrollbarAlwaysDrawVerticalTrack="true">
+
+
+
+