我目前正在开发一个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。
答案 0 :(得分:0)
我将假设您正在使用自己的Adapter
和ViewHolder
。在自定义ViewHolder内说... void setViewOffset(int position)
内创建一个方法,如果该位置是您想要的位置,则在该方法中为视图设置不同的左边界。在适配器的onBindViewHolder(int position)
中调用此方法,然后传递位置。
否则,您身边的一些代码将为您提供更多帮助。