RecyclerView分割线宽度与ItemDecoration

3
我有一个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

我该如何做到这一点?欢迎任何建议。
2个回答

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(...))中绘制装饰的矩形空间。


0

只需将值放入

    final int left = 200;
    final int right= 200;

虽然这段代码可能回答了问题,但是提供关于为什么和/或如何回答问题的额外上下文可以提高其长期价值。 - β.εηοιτ.βε
@β.εηοιτ.βε 在这种情况下,我没有太多需要解释的,但我将来一定会注意到这一点。 - Triaro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接