带有 ItemDecoration 的 RecyclerView 分隔线宽度
Posted
技术标签:
【中文标题】带有 ItemDecoration 的 RecyclerView 分隔线宽度【英文标题】:RecyclerView divider width with ItemDecoration 【发布时间】:2019-02-25 10:45:01 【问题描述】:我有一个 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(红线)的左右添加一点边距,使其看起来比屏幕宽度短,如下所示:-
我怎样才能做到这一点?任何建议表示赞赏。
【问题讨论】:
【参考方案1】:看看getItemOffsets
方法。像下面这样的东西应该可以做到。
override fun getItemOffsets(
rect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
)
rect.right = parent.right - yourMargin
rect.left = parent.left + yourMargin
此方法将设置您将在其中绘制 (onDraw(...)
) 装饰的矩形空间。
【讨论】:
【参考方案2】:只要把值放在
final int left = 200;
final int right= 200;
【讨论】:
虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。 @β.εηοιτ.βε 在这种情况下,我没有找到太多要解释的东西,但我以后一定会解决这个问题的。以上是关于带有 ItemDecoration 的 RecyclerView 分隔线宽度的主要内容,如果未能解决你的问题,请参考以下文章
从头开始学 RecyclerView ItemDecoration 详解
RecyclerView ItemDecoration 完全解析