带有ItemDecoration的RecyclerView分隔线宽度

问题描述 投票:2回答:1

我有一个RecyclerView,并向其添加了一个ItemDecoration,如下所示:-

mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST));

我的ItemDecoration看起来像:-

public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state)
    {
        final int top = parent.getPaddingTop();
        final int bottom = parent.getHeight() - parent.getPaddingBottom();
        final int childCount = parent.getChildCount();
        for (int i = 0; i < childCount; i++)
        {
            final View child = parent.getChildAt(i);
            final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
            final int left = child.getRight() + params.rightMargin;
            final int right = left + mDivider.getIntrinsicHeight();
            mDivider.setBounds(left, top, right, bottom);
            mDivider.draw(c);
        }
}

这将绘制一个分隔符,占据整个屏幕宽度。我想从左侧和右侧添加大约15dp(红线)的一点边距,以使其看起来比屏幕宽度短一些,如下所示:-

enter image description here

我该如何实现?任何建议表示赞赏。

android-recyclerview width recyclerview-layout divider item-decoration
1个回答
0
投票

看看getItemOffsets方法。像下面这样的事情应该做。

override fun getItemOffsets(
    rect: Rect,
    view: View,
    parent: RecyclerView,
    state: RecyclerView.State
) {
    rect.right = parent.right - yourMargin
    rect.left = parent.left + yourMargin
}

此方法将设置要在其上绘制(onDraw(...))装饰的矩形空间。

© www.soinside.com 2019 - 2024. All rights reserved.