From 3876594c7131c423a5238c35d0ca384ef3c97aad Mon Sep 17 00:00:00 2001 From: Dmitry Donskoy Date: Sat, 20 Oct 2018 20:22:04 +0300 Subject: [PATCH] [android] Fixed top offset for first flexline --- android/res/layout/tags_category.xml | 13 ++++++++----- android/res/layout/ugc_routes_frag.xml | 1 + .../maps/editor/MultilanguageAdapter.java | 2 +- .../maps/ugc/routes/TagsCompositeAdapter.java | 1 - .../maps/ugc/routes/UgcRoutesFragment.java | 14 +++++++++++++- .../recycler/UgcRouteTagItemDecorator.java | 18 ++++++++++++++++++ 6 files changed, 41 insertions(+), 8 deletions(-) diff --git a/android/res/layout/tags_category.xml b/android/res/layout/tags_category.xml index c9c129cfb0..eea608a303 100644 --- a/android/res/layout/tags_category.xml +++ b/android/res/layout/tags_category.xml @@ -1,11 +1,14 @@ - + diff --git a/android/res/layout/ugc_routes_frag.xml b/android/res/layout/ugc_routes_frag.xml index 0f3d7cc6b2..7c3569fb8d 100644 --- a/android/res/layout/ugc_routes_frag.xml +++ b/android/res/layout/ugc_routes_frag.xml @@ -67,6 +67,7 @@ android:paddingStart="@dimen/margin_base" android:paddingEnd="@dimen/margin_base" android:paddingRight="@dimen/margin_base" + android:overScrollMode="never" android:layout_width="match_parent" android:layout_height="wrap_content"/> diff --git a/android/src/com/mapswithme/maps/editor/MultilanguageAdapter.java b/android/src/com/mapswithme/maps/editor/MultilanguageAdapter.java index ca76a6aecb..8964bbec2a 100644 --- a/android/src/com/mapswithme/maps/editor/MultilanguageAdapter.java +++ b/android/src/com/mapswithme/maps/editor/MultilanguageAdapter.java @@ -117,7 +117,7 @@ public class MultilanguageAdapter extends RecyclerView.Adapter pair = new Pair<>(components.mAdapter, item); mListener.onItemClick(v, pair); diff --git a/android/src/com/mapswithme/maps/ugc/routes/UgcRoutesFragment.java b/android/src/com/mapswithme/maps/ugc/routes/UgcRoutesFragment.java index 1e87319159..d7290fc66f 100644 --- a/android/src/com/mapswithme/maps/ugc/routes/UgcRoutesFragment.java +++ b/android/src/com/mapswithme/maps/ugc/routes/UgcRoutesFragment.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Pair; @@ -24,6 +25,7 @@ import com.mapswithme.maps.bookmarks.OnItemClickListener; import com.mapswithme.maps.bookmarks.data.BookmarkManager; import com.mapswithme.maps.bookmarks.data.CatalogTag; import com.mapswithme.maps.bookmarks.data.CatalogTagsGroup; +import com.mapswithme.maps.widget.recycler.ItemDecoratorFactory; import com.mapswithme.util.UiUtils; import java.util.ArrayList; @@ -70,7 +72,7 @@ public class UgcRoutesFragment extends BaseMwmFragment implements BookmarkManage mProgress = root.findViewById(R.id.progress_container); mTagsContainer = root.findViewById(R.id.tags_container); mRetryBtnContainer = root.findViewById(R.id.retry_btn_container); - mRecycler = root.findViewById(R.id.recycler); + initRecycler(root); View retryBtn = mRetryBtnContainer.findViewById(R.id.retry_btn); retryBtn.setOnClickListener(v -> onRetryClicked()); UiUtils.hide(mTagsContainer, mRetryBtnContainer); @@ -80,6 +82,16 @@ public class UgcRoutesFragment extends BaseMwmFragment implements BookmarkManage return root; } + private void initRecycler(@NonNull ViewGroup root) + { + mRecycler = root.findViewById(R.id.recycler); + mRecycler.setItemAnimator(null); + RecyclerView.ItemDecoration decor = ItemDecoratorFactory.createRatingRecordDecorator( + getContext().getApplicationContext(), + DividerItemDecoration.VERTICAL); + mRecycler.addItemDecoration(decor); + } + private void onRetryClicked() { UiUtils.hide(mTagsContainer, mRetryBtnContainer); diff --git a/android/src/com/mapswithme/maps/widget/recycler/UgcRouteTagItemDecorator.java b/android/src/com/mapswithme/maps/widget/recycler/UgcRouteTagItemDecorator.java index 0a9331ef4c..ed93f12f39 100644 --- a/android/src/com/mapswithme/maps/widget/recycler/UgcRouteTagItemDecorator.java +++ b/android/src/com/mapswithme/maps/widget/recycler/UgcRouteTagItemDecorator.java @@ -6,6 +6,11 @@ import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.View; +import com.google.android.flexbox.FlexLine; +import com.google.android.flexbox.FlexboxLayoutManager; + +import java.util.List; + public class UgcRouteTagItemDecorator extends TagItemDecoration { private int mCurrentOffset; @@ -26,6 +31,19 @@ public class UgcRouteTagItemDecorator extends TagItemDecoration outRect.left = mCurrentOffset == 0 ? 0 : getDivider().getIntrinsicWidth() / 2; outRect.right = getDivider().getIntrinsicWidth() / 2; + FlexboxLayoutManager flexboxLayoutManager = (FlexboxLayoutManager) parent.getLayoutManager(); + List flexLines = flexboxLayoutManager.getFlexLines(); + if (flexLines == null || flexLines.isEmpty()) + { + outRect.top = 0; + return; + } + + FlexLine flexLine = flexLines.get(0); + int position = parent.getLayoutManager().getPosition(view); + int itemCount = flexLine.getItemCount(); + if (position < itemCount) + outRect.top = 0; } private boolean hasSpaceFromRight(Rect outRect, View view, RecyclerView parent)