如何解决如何将 RecyclerView Grid Layout Items 与固定列数对齐到左侧?
我有一个带有网格布局的回收视图,我想在其中将项目与固定列数的左侧对齐。
目前,recyclerview 网格布局将宽度划分为多个项目并将它们放置在相等的边距中。
这是我的代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_grid_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background"
android:clickable="true"
android:layout_marginStart="@dimen/grid_2"
android:layout_marginLeft="@dimen/grid_2"
android:padding="@dimen/layout_margin_5dp"
android:layout_marginTop="@dimen/layout_margin_param_1" >
<com.carwale.carwale.ui.widgets.CarwaleTextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/iv_grid_item_image"
android:layout_centerHorizontal="true"
android:gravity="center"
android:textColor="@color/warm_grey"
android:ellipsize="end"
android:textSize="@dimen/font_h4"
android:visibility="gone"
android:singleLine="true" />
</RelativeLayout>
RecyclerView recyclerGridLayout = new RecyclerView(mContext);
RecyclerView.LayoutParams params = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
recyclerGridLayout.setHasFixedSize(true);
int spanCount = 4; // 3 columns
int rowSpacing = getResources().getDimensionPixelSize(20);
int columnSpacing = getResources().getDimensionPixelSize(6);
recyclerGridLayout.addItemdecoration(new GridSpacingItemdecoration(spanCount,rowSpacing,columnSpacing));
recyclerGridLayout.setnestedScrollingEnabled(false);
recyclerGridLayout.setLayoutManager(new GridLayoutManager(mContext,spanCount));
GridLayoutAdapter gridLayoutAdapter = new GridLayoutAdapter(mContext);
recyclerGridLayout.setAdapter(gridLayoutAdapter);
@Override
public void getItemOffsets(@NonNull Rect outRect,@NonNull View view,@NonNull RecyclerView parent,@NonNull RecyclerView.State state) {
int position = parent.getChildAdapterPosition(view); // item position
int column = position % spanCount; // item columngrid
outRect.left = column * columnSpacing / spanCount; // column * ((1f / spanCount) * rowSpacing)
outRect.right = columnSpacing - (column + 1) * columnSpacing / spanCount; // rowSpacing - (column + 1) * ((1f / spanCount) * rowSpacing)
if (position >= spanCount) {
outRect.top = rowSpacing; // item top
}
}
解决方法
每次用户点击Item时,根据用户点击的顺序修改RecyclerView
数据集数组并调用RecyclerViewadapter.notifyDatasetchanged()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。