【发布时间】:2016-03-07 09:47:16
【问题描述】:
我有一个 RecyclerView。出于图形设计的原因,这个回收器拥有一个填充。对于recyclerview的某些项目,我不需要这个填充。
所以我的意图是为 itemDecorator 定义一个负边距,如下所示:
class MarginDecoration extends RecyclerView.ItemDecoration {
private int marge_small_border;
public MarginDecoration(Context context) {
marge_small_border = context.getResources().getDimensionPixelSize(R.dimen.marge_small_border);
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.set(-marge_small_border, 0, -marge_small_border, 0);
}
}
这不行!
编辑:
3.我的需要:(右图)
这就是我想做的事
1.左图
Orange 是存放 RecyclerView 的 FrameLayout,因此带有水平填充。
我的 RecyclerView,有一个标题、一张图片,然后是逐行呈现 2 的项目。
我的要求是: - 让标题填满屏幕(水平维度上没有填充)=> 在图像/标题级别看不到橙色 - 非标题项之间的每个空间都具有相同的尺寸。
2。我今天的解决方案,带有装饰器
我为 Xdp 的每个项目都放置了一个装饰器 我在 Xdp 的容器框架上放了一个填充 => 对于每个非标题项目,我都有 2Xdp。
现在,我应该删除页眉的填充,所以添加一个 -Xdp 的装饰器。
问题:
这是怎么做到的?
也欢迎任何其他解决方案。
编辑:
根据项目位置制作项目的装饰器并不是真正可行的,因为在列表中,然后可以出现标签(充满)。 块中(标签之间)添加的 impair 项目数量将使标签之前的项目空间无效。
【问题讨论】:
-
你为什么不直接删除填充?
-
我放了一些图表和背景信息。
-
然后添加填充或边距。
-
我没明白你的意思,对不起!
-
正如我所说,从你不想要的地方移除填充,然后放在你需要的地方。就这么简单。
标签: java android android-recyclerview decorator