我正在尝试创建一个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。
答案 0 :(得分:0)
您可以关注several logical numpy functions或只阅读this tutorial类似的问题。
提示:
只需添加左边填充:
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.left = 30;
}