我使用RecyclerView.ItemDecoration类在列表中创建分隔符,但我想隐藏列表中最后一项的分隔符。这是可能的,而不必自己实施分隔线?是否可以隐藏RecyclerView中最后一项的ItemDecoration?
回答
你可以试试这个,
public class SimpleDividerItemDecoration extends RecyclerView.ItemDecoration {
private Drawable mDivider;
public SimpleDividerItemDecoration(Context context) {
mDivider = ContextCompat.getDrawable(context, R.drawable.line_divider);
}
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
int left = parent.getPaddingLeft();
int right = parent.getWidth() - parent.getPaddingRight();
int childCount = parent.getChildCount();
for (int i = 0; i < childCount; i++) {
if (i == (childCount - 1)) {
continue;
}
View child = parent.getChildAt(i);
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
int top = child.getBottom() + params.bottomMargin;
int bottom = top + mDivider.getIntrinsicHeight();
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}
}
不幸的是,这没有奏效。实际上,我遇到了一个怪异的问题。这似乎是正确的方式,但我需要弄清楚我的代码中的其他错误。谢谢 – fobbymaster
这是不正确的答案。 'childCount - 1'会给你最后一个**可见**孩子的索引。正确的比较是:@Maxim Turaev的答案是'parent.getChildAdapterPosition(child)== parent.getAdapter()。getItemCount() - 1' – Stanislav
[更新]
看起来像支持库的新版本不起作用了:(
你可以也可以这样做,(表格here):
recyclerView.addItemDecoration(
new DividerItemDecoration(context, layoutManager.getOrientation())) {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
int position = parent.getChildAdapterPosition(view);
// hide the divider for the last child
if (position == parent.getAdapter().getItemCount() - 1) {
outRect.setEmpty();
} else {
super.getItemOffsets(outRect, view, parent, state);
}
}
});
不适用于我。 – lostintranslation
是的,也不适合我。 – Sotti
- 1. Android - 检测RecyclerView中的最后一个项目是否可见
- 2. Java:Swing JComboBox - 是否可以隐藏项目?
- 3. DC.JS表是否可以隐藏一列?
- 4. Nestedscrollview中的Recyclerview隐藏了从片段回来的最后一个项目
- 5. 是否可以隐藏UITabBarController中的某些选项卡?
- 6. RecyclerView切断最后一项
- 7. 最后一项隐藏浮动:左
- 8. RecyclerView ItemDecoration为vertrical名单
- 9. RecyclerView时使用ItemDecoration VS onBindViewHolder
- 10. TextView隐藏最后一个词,我可以大致可见
- 11. 是否可以“隐藏”语言扩展?
- 12. 是否可以隐藏AJAX API?
- 13. 是否可以隐藏URL跟踪?
- 14. 是否可以用动画隐藏UIToolbar?
- 15. 是否可以在Team Foundation Server 2010中隐藏一组用户的选项卡?
- 16. Recyclerview:隐藏项目,而不从ArrayList中
- 17. iPhone:是否可以隐藏和取消隐藏UIACtionSheet按钮?
- 18. 的项目是不一样的宽度使用RecyclerView GridLayoutManager通过ItemDecoration
- 19. RecyclerView隐藏LinearLayout
- 20. 是否可以在Intent AppChooser中隐藏一些应用程序?
- 21. 是否可以在asp:repeater中隐藏一列?
- 22. 获取可见李:最后,不是隐藏李:最后
- 23. 如何访问隐藏的RecyclerView项目?
- 24. 在隐藏引用者之后是否可以使用get_headers?
- 25. 是否可以隐藏标准头部的一部分(C)?
- 26. 如何从RecyclerView的ItemDecoration类访问LayoutManager?
- 27. RecyclerView的ItemDecoration打破使用ConstraintLayout构建的项目布局
- 28. 是否有可能以选择性的方式隐藏Emacs中的菜单项?
- 29. 隐藏最后CSS
- 30. RecyclerView不隐藏某些项目
不,但您可以复制源代码并进行调整,或者只是自己推出。 – RobCo