如何在Android中抵消RecyclerView的第二列?

时间:2019-05-14 15:25:40

标签: java android android-layout android-recyclerview

我目前正在开发一个Android应用,其中我使用recyclerView向用户显示该应用的可用服务列表。现在,列表的UI是一个简单的两列,可滚动的recyclerView,看起来像在gridview中一样,这些项目都已被捕捉。

我想补偿recyclerView的第二列,使其看起来有点像键盘的键行,而不是完美地对齐项目。

我看到了另一个问题,它要求与我相同的东西(尽管水平而不是垂直),但答案无济于事,我也不想破坏线程的生命^^ RecyclerView - horizontal, two-row grid, second row offset

有人知道这样做的方法吗?也许某个地方有一个图书馆,但是我到处寻找可以找到答案但没有成功的地方...

编辑:感谢Bled K.提供的解决方法:D我添加了此函数并在OnBindViewHolder中对其进行了调用:

public void setViewOffset(int position){
            if(position==1){
                ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) this.f.getLayoutParams();
                params.topMargin = cardView.getHeight()/3;
                this.f.setLayoutParams(params);
            }else{
                ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) this.f.getLayoutParams();
                params.topMargin = 0;
                this.f.setLayoutParams(params);
            }
        }

在我的情况下,this.f是包含我的Cardview和所有内容的constraintLayout。

1 个答案:

答案 0 :(得分:0)

我将假设您正在使用自己的AdapterViewHolder。在自定义ViewHolder内说... void setViewOffset(int position)内创建一个方法,如果该位置是您想要的位置,则在该方法中为视图设置不同的左边界。在适配器的onBindViewHolder(int position)中调用此方法,然后传递位置。

否则,您身边的一些代码将为您提供更多帮助。