我有一个 RecyclerView。出于图形设计原因,该回收商拥有一个填充物。对于 recyclerview 的某些项目,我不需要这个填充。
所以我的 Intent 是为 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。左图
橙色是容纳 RecyclerView 的 FrameLayout,因此具有水平填充。
我的 RecyclerView,有一个标题,一张图片,然后是按行呈现 2 的项目。
我的要求是: - 让标题填满屏幕(水平尺寸没有填充)=> 在图像/标题级别看不到橙色 - 非标题项之间的每个空间都具有相同的尺寸。
<强>2。我今天的解决方案,带有装饰器
我为 Xdp 的每个项目都添加了一个装饰器 我在 Xdp 的容器框架上放了一个填充 => 我为每个非 header 项目设置了 2Xdp。
现在,我应该删除标题的填充,所以添加一个装饰器 -Xdp。
问题:
怎么做到的?
也欢迎任何其他解决方案。
编辑:
根据item的位置做一个item的装饰器是不太可行的,因为,在列表中,then可以出现label(full with)。 添加减少 block 中项目的数量(标签之间)将使标签前的项目空间无效。
最佳答案
我遇到了类似的问题。我不知道你是否还需要帮助,但我做了以下事情:
向回收器 View 添加填充
将回收器 View 的
android:clipToPadding
和android:clipChildren
标志设置为 false向标题项添加负填充,等于给定 RV 的边距
(可选)如果要使中间分隔线和边的大小相等,将一半的填充给列表项,一半给 recyclerView,如上所示
关于java - 如何在 RecyclerView 中设置负边距装饰?或者为什么这是不可能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34054829/