StaggeredGridLayoutManager:添加Margin使得布局项被推到一边
StaggeredGridLayoutManager: Adding Margin makes the layout items pushed to the side
所以,我正在做一个小项目,我想将 StaggeredGridLayoutManager
添加到文件中。如果我不在布局中添加 itemDecorator
且不添加 margin
或 padding
,它会起作用。一旦我添加边距,它就会将列表推到一边。我附上截图以澄清问题。
这是我的代码:
recyclerView.setHasFixedSize(true);
StaggeredGridLayoutManager gridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
recyclerView.addItemDecoration(new EqualSpaceItemDecoration(8));
recyclerView.setLayoutManager(gridLayoutManager);
recyclerView.setAdapter(adapter);
以及项目的布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:id="@+id/wallpaper_item_card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="@color/cardview_light_background"
app:cardCornerRadius="4dp"
app:cardElevation="4dp"
app:cardPreventCornerOverlap="false">
<ImageView
android:id="@+id/wallpaper_item_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.v7.widget.CardView>
</LinearLayout>
我四处寻找了一段时间,但没能找到解决问题的办法。任何帮助表示赞赏。谢谢。
我不知道您是否已经找到解决方案,但我会留下评论以防其他人看到问题。
我通过执行以下操作解决了这个问题:
layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
示例:
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(layoutManager);
在科特林中使用:
viewManager.gapStrategy = StaggeredGridLayoutManager.GAP_HANDLING_NONE
所以,我正在做一个小项目,我想将 StaggeredGridLayoutManager
添加到文件中。如果我不在布局中添加 itemDecorator
且不添加 margin
或 padding
,它会起作用。一旦我添加边距,它就会将列表推到一边。我附上截图以澄清问题。
这是我的代码:
recyclerView.setHasFixedSize(true);
StaggeredGridLayoutManager gridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
recyclerView.addItemDecoration(new EqualSpaceItemDecoration(8));
recyclerView.setLayoutManager(gridLayoutManager);
recyclerView.setAdapter(adapter);
以及项目的布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:id="@+id/wallpaper_item_card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardBackgroundColor="@color/cardview_light_background"
app:cardCornerRadius="4dp"
app:cardElevation="4dp"
app:cardPreventCornerOverlap="false">
<ImageView
android:id="@+id/wallpaper_item_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.v7.widget.CardView>
</LinearLayout>
我四处寻找了一段时间,但没能找到解决问题的办法。任何帮助表示赞赏。谢谢。
我不知道您是否已经找到解决方案,但我会留下评论以防其他人看到问题。
我通过执行以下操作解决了这个问题:
layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
示例:
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(layoutManager);
在科特林中使用:
viewManager.gapStrategy = StaggeredGridLayoutManager.GAP_HANDLING_NONE