Android RecyclerView 网格布局 实现分割线宽

2022-07-09  本文已影响0人  洪荒之气

转载自:https://www.it610.com/article/1289321582728126464.htm

工具类:
public class GridSpacingItemDecoration extends RecyclerView.ItemDecoration {

private int spanCount;
private int spacing;
private boolean includeEdge;

public GridSpacingItemDecoration(int spanCount, int spacing, boolean includeEdge) {
    this.spanCount = spanCount;
    this.spacing = spacing;
    this.includeEdge = includeEdge;
}

@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
    int position = parent.getChildAdapterPosition(view);
    int column = position % spanCount;
    if (includeEdge) {
        outRect.left = spacing - column * spacing / spanCount;
        outRect.right = (column + 1) * spacing / spanCount;
        if (position < spanCount) {
            outRect.top = spacing;
        }
        outRect.bottom = spacing;
    } else {
        outRect.left = column * spacing / spanCount;
        outRect.right = spacing - (column + 1) * spacing / spanCount;

// if (position >= spanCount) {
// outRect.top = spacing;
// }
if (position < spanCount) {
outRect.top = spacing;
}
outRect.bottom = spacing;
}
}
}

使用方式:
recyclerview.addItemDecoration(new GridSpacingItemDecoration(2, 30, true));
recyclerview.setHasFixedSize(true);

ITEM布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="@dimen/dp_360"
    android:scaleType="centerCrop"
    android:src="@mipmap/banner2"/>

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/black"
    android:textStyle="bold"
    android:text="林家铺子新国货你柠檬321g*5颗装"/>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:gravity="center_vertical">
    <TextView
        android:id="@+id/orgPrice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:drawableLeft="@mipmap/org_price"
        android:drawablePadding="@dimen/dp_3"
        android:textSize="@dimen/sp_12"
        android:textColor="@color/black"
        android:layout_marginRight="@dimen/dp_36"
        android:text="288/件"/>
    <TextView
        android:id="@+id/vipPrice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableLeft="@mipmap/vip_price"
        android:drawablePadding="@dimen/dp_3"
        android:gravity="center"
        android:textSize="@dimen/sp_12"
        android:textColor="@color/black"
        android:text="158/件"/>
    <View
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_weight="1"/>
    <TextView
        android:id="@+id/sellNum"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="@dimen/sp_12"
        android:textColor="@color/grgray"
        android:gravity="center"
        android:text="月销88件"/>

</LinearLayout>

</LinearLayout>

上一篇下一篇

猜你喜欢

热点阅读