【问题标题】:How set a negative margin decoration in RecyclerView? or why this is not possible?如何在 RecyclerView 中设置负边距装饰?或者为什么这是不可能的?
【发布时间】: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


【解决方案1】:

我遇到了类似的问题。我不知道您是否还需要这方面的帮助,但我执行了以下操作:

  1. 向回收站视图添加填充

  2. 将回收站视图的android:clipToPaddingandroid:clipChildren 标志设置为false

  3. 向标题项添加负填充,等于给 RV 的边距

  4. (可选)如果要使中间分隔线和边的大小相等,则将一半的内边距分配给列表项,将一半的内边距分配给 recyclerView,如上所述

【讨论】:

    猜你喜欢
    • 2021-08-26
    • 2019-05-11
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 2021-05-10
    • 1970-01-01
    相关资源
    最近更新 更多