我一直在尝试在RecyclerView中重叠两个相邻的位置,但是失败了。我想让第一个位置的一部分重叠/覆盖第二个位置。
我一直在尝试使用自定义的RecyclerView.ItemDecoration和它的getItemOffsets,但似乎只能在位置上添加填充/边距,而不能将其转换为视图父级之外的新位置。
有没有人知道如何在RecyclerView中实现这一点的指针?
我一直在尝试在RecyclerView中重叠两个相邻的位置,但是失败了。我想让第一个位置的一部分重叠/覆盖第二个位置。
我一直在尝试使用自定义的RecyclerView.ItemDecoration和它的getItemOffsets,但似乎只能在位置上添加填充/边距,而不能将其转换为视图父级之外的新位置。
有没有人知道如何在RecyclerView中实现这一点的指针?
嗯,你也可以在RecyclerView.ItemDecoration中添加负边距(negative margin)。
例子:
ItemDecorator.java
public class ItemDecorator extends RecyclerView.ItemDecoration {
private final int mSpace;
public ItemDecorator(int space) {
this.mSpace = space;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.left = mSpace;
outRect.right = mSpace;
outRect.bottom = mSpace;
outRect.top = mSpace;
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("Hi");
arrayList.add("World");
arrayList.add("What");
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.rec1);
//Negative margin!
ItemDecorator itemDecorator = new ItemDecorator(-30);
recyclerView.setAdapter(new CustomAdapter(arrayList));
recyclerView.addItemDecoration(itemDecorator);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
}