【问题标题】:RecyclerView ItemDecoration divider cuts my child viewsRecyclerView ItemDecoration 分隔线削减了我的孩子的意见
【发布时间】:2016-06-02 02:50:34
【问题描述】:

我想得到如下图的分隔符:

我希望所有列的宽度相同但间距不同。 现在我的第一列和最后一列被剪成这样:

这是我的ItemDecoration

public class MoreIndexItemDividerDecoration extends RecyclerView.ItemDecoration {
    private GridLayoutManager mGridLayoutManager;
    private GridLayoutManager.SpanSizeLookup mSpanSizeLookup;
    private int mSpanCount;

    public MoreIndexItemDividerDecoration(GridLayoutManager manager, int spanCount) {
        mGridLayoutManager = manager;
        mSpanSizeLookup = mGridLayoutManager.getSpanSizeLookup();
        mSpanCount = spanCount;
    }

    @Override
    public void getItemOffsets(Rect outRect, View child, RecyclerView parent, RecyclerView.State state) {
        int pos = parent.getChildLayoutPosition(child);
        int left = 0;
        int top = 0;
        int right = 0;
        int bottom = 0;

        if (mGridLayoutManager.getItemViewType(child) == 1) {
            if (mSpanSizeLookup.getSpanIndex(pos, mSpanCount) == 0) {
                left = 50;
            } else {
                left = 5;
            }
            if (mSpanSizeLookup.getSpanIndex(pos, mSpanCount) == mSpanCount - 1) {
                right = 50;
            } else {
                right = 5;
            }
            top = 5;
            bottom = 5;
        } else {
            if (mSpanSizeLookup.getSpanGroupIndex(pos, 4) != 0) {
                top = 45;
            }
            bottom = 45;
        }

        outRect.set(left, top, right, bottom);
        HtscLog.e("child pos: " + pos + " span size: " + mSpanSizeLookup.getSpanSize(pos) + " group index: " + mSpanSizeLookup.getSpanGroupIndex(pos, 4) + " index: " + mSpanSizeLookup.getSpanIndex(pos, 4) + " view type: " + mGridLayoutManager.getItemViewType(child));
    }
}

我该如何解决这个问题?谢谢!

【问题讨论】:

    标签: android android-layout android-recyclerview rect gridlayoutmanager


    【解决方案1】:

    其实getItemOffsetsoutRect参数中设置的值占用了item的空间。

    我已经实现了一个SCommonItemDecoration,它实际上解决了这个问题。

    请参考:ibosong/CommonItemDecoration

    一个较晚的答案,但可能对有相同要求的其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-02-25
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多