RecyclerView ItemDecoration

时间:2016-01-28 12:23:44

标签: android-drawable android-recyclerview divider

我正在尝试创建一个ItemDecoration,它被绘制为带有左边距的RecyclerView项目之间的分隔符。

目前我在ItemDecoration类中有这个实现:

@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
    final int left = parent.getPaddingLeft();
    final int right = parent.getWidth() - parent.getPaddingRight();
    final RecyclerView.LayoutManager lm = parent.getLayoutManager();
    final int childCount = parent.getChildCount();

    for (int i = 0; i < childCount; i++) {
        final View child = parent.getChildAt(i);
        RecyclerView.ViewHolder viewHolder = parent.getChildViewHolder(child);

        final int top = lm.getDecoratedBottom(child);
        final int bottom = top + mDivider.getIntrinsicHeight();
        mDivider.setBounds(left + 40, top, right, bottom);
        mDivider.draw(c);
    }
}

但看起来分频器仍然在画宽度。那么我做错了什么?

我也尝试使用左侧插入(来自xml)设置一个InsetDrawable作为分隔符,但似乎根本不会绘制它。

PS。出于解释目的,这40个值只是一个硬编码的值。 mDivider是Drawable。

1 个答案:

答案 0 :(得分:0)

您可以关注several logical numpy functions或只阅读this tutorial类似的问题。

提示:

只需添加左边填充:

@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
    outRect.left = 30;
}