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"> + + + +