我使用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. DC.JS表是否可以隐藏一列?
- 3. Nestedscrollview中的Recyclerview隐藏了从片段回来的最后一个项目
- 4. TextView隐藏最后一个词,我可以大致可见
- 5. RecyclerView ItemDecoration为vertrical名单
- 6. 是否可以隐藏EditText行?
- 7. 是否可以用动画隐藏UIToolbar?
- 8. 是否可以在Team Foundation Server 2010中隐藏一组用户的选项卡?
- 9. Recyclerview:隐藏项目,而不从ArrayList中
- 10. iPhone:是否可以隐藏和取消隐藏UIACtionSheet按钮?
- 11. RecyclerView隐藏LinearLayout
- 12. 获取可见李:最后,不是隐藏李:最后
- 13. 是否可以在asp:repeater中隐藏一列?
- 14. 的项目是不一样的宽度使用RecyclerView GridLayoutManager通过ItemDecoration
- 15. 在隐藏引用者之后是否可以使用get_headers?
- 16. 如何访问隐藏的RecyclerView项目?
- 17. 隐藏最后CSS
- 18. 隐藏最后一个项目上的下一个按钮jCarousel
- 19. 是否可以在其自己的类中隐藏一个字段(或只是操作/隐藏自动完成)?
- 20. RecyclerView的ItemDecoration打破使用ConstraintLayout构建的项目布局
- 21. 删除最后一项后无法隐藏div
- 22. 是否可以隐藏地址栏中的密码字段?
- 23. 是否可以隐藏aChart引擎线图中的x轴线?
- 24. 是否可以在TFS查询中隐藏未使用的值?
- 25. 是否可以从IFileDialog中删除/隐藏打开的按钮
- 26. 是否可以隐藏QTreeView中的某些列?
- 27. 是否可以与selenium2中的隐藏元素进行交互?
- 28. 是否可以折叠或隐藏SlickGrid中的行?
- 29. 是否可以隐藏故事栏中的导航栏?
- 30. 是否可以使用javascript隐藏PDF文档中的页面?
不,但您可以复制源代码并进行调整,或者只是自己推出。 – RobCo