RecyclerView.addItemDecoration 没有效果
时间: 2023-11-16 19:46:28 浏览: 105
RecyclerView.addItemDecoration没有效果可能有几个原因。首先,可能是没有正确设置ItemDecoration。确保在调用addItemDecoration方法之前,先创建并设置好ItemDecoration实例。其次,可能是设置的ItemDecoration并不可见或者没有被正确绘制出来。可以检查一下设置的分割线或装饰物的颜色、宽度等属性是否正确。最后,可能是RecyclerView的布局方式不支持ItemDecoration。例如,如果使用了GridLayoutManager布局管理器,并且设置了分割线,但是分割线并不会显示出来,这是因为GridLayoutManager默认不支持分割线的绘制。
相关问题
RecyclerView.addItemDecoration FRAGMENT
RecyclerView.addItemDecoration()方法是用来为RecyclerView添加装饰器的。装饰器可以用于添加分隔线、边距等效果,以美化和定制RecyclerView的显示效果。在Fragment中使用RecyclerView时,可以通过调用recyclerView.addItemDecoration()方法来添加装饰器,实现不同的界面效果。
recyclerview item底部使用 .addItemDecoration加一条黑线
好的,您可以使用 RecyclerView 的 addItemDecoration() 方法来为 item 添加边界装饰,以达到添加一条黑线的效果。具体的步骤如下:
1. 定义一个继承于 RecyclerView.ItemDecoration 的类,用来实现您的边界装饰效果。例如:
```
public class MyDividerItemDecoration extends RecyclerView.ItemDecoration {
private Drawable mDivider;
public MyDividerItemDecoration(Context context) {
mDivider = ContextCompat.getDrawable(context, R.drawable.divider);
}
@Override
public void onDraw(Canvas canvas, RecyclerView parent, RecyclerView.State state) {
int left = parent.getPaddingLeft();
int right = parent.getWidth() - parent.getPaddingRight();
for (int i = 0; i < parent.getChildCount(); i++) {
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(canvas);
}
}
}
```
这里的 R.drawable.divider 需要您自己定义一张黑线的图片,并放在 res/drawable 目录下。
2. 在您的 RecyclerView 初始化代码中,调用 addItemDecoration() 方法来为 RecyclerView 添加装饰。例如:
```
recyclerView.addItemDecoration(new MyDividerItemDecoration(this));
```
这样,您就可以在 RecyclerView 的 item 底部添加一条黑线了。
阅读全文