From e2f01d1724a1038d30d2f5e04c6fe55d8e0802b0 Mon Sep 17 00:00:00 2001 From: Sergiy Kozyr Date: Tue, 12 Sep 2023 10:56:02 +0300 Subject: [PATCH] [Android] Transit steps info is now scrollable (temporary solution). (#5885) * [Android] Transit steps info is now scrollable. Signed-off-by: S. Kozyr * [Android] Fixed map buttons position when navigation panel raises. Signed-off-by: S. Kozyr * Introduced function to scroll to bottom. Signed-off-by: S. Kozyr --------- Signed-off-by: S. Kozyr --- .../java/app/organicmaps/MwmActivity.java | 6 ++- .../routing/RoutingBottomMenuController.java | 17 +++++++- .../layout/routing_bottom_panel_transit.xml | 40 ++++++++++++------- 3 files changed, 45 insertions(+), 18 deletions(-) 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"> + + + +