我有recyclerView
gridManagerLayout
,如下所示:
GridLayoutManager manager = new GridLayoutManager(Main.this, 10);
manager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(manager);
如您所见,第0,2,4,6和8列需要小于其他列。
我尝试了manager.setSpanSizeLookup(spanSizeLookup)
,但我不想更改spanCount
的{{1}}。
我通过调用设置构造函数中每个holder的宽度 itemView.getLayoutParams()。width = THE_WIDTH;
看起来黄线就在他们的位置,不知道为什么其他人有偏移
这是图像的XML
layout manager
这是它们之间空间的xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:adjustViewBounds="true"
android:layout_centerHorizontal="true"
android:layout_above="@+id/text"
android:scaleType="centerCrop"/>
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Category name"
android:layout_alignParentBottom="true"
android:gravity="center"
android:background="#7f007f"/>
</RelativeLayout>
答案 0 :(得分:0)
在适配器中,使用layout.params动态设置项目的宽度,例如
tv.setLayoutParams(new ViewGroup.LayoutParams(
10,
ViewGroup.LayoutParams.WRAP_CONTENT));
检查,
if(position%2==0) {
your_item_parent_layout.setLayoutParams(new ViewGroup.LayoutParams(
10,
ViewGroup.LayoutParams.WRAP_CONTENT));
}
else{
your_item_parent_layout.setLayoutParams(new ViewGroup.LayoutParams(
100,
ViewGroup.LayoutParams.WRAP_CONTENT));
}
适配器中的。
希望它有所帮助。
答案 1 :(得分:0)
为此,您需要使用getItemViewType
的{{1}}方法,并且必须发送布局类型,并在Adapter
中onCreateViewHolder
inflate
{ {1}}根据您的类型。您可以将layouts
和width
设置为两个不同的height
,如屏幕截图所示