我有一个带回收器的简单布局。我用Adapter提供它并为回收器设置GridLayoutManager
。
<android.support.v7.widget.RecyclerView
android:id="@+id/scripts_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="50dp"
android:verticalSpacing="20dp"
android:clipToPadding="false"
android:orientation="vertical"
app:layoutManager="android.support.v7.widget.GridLayoutManager"
tools:listitem="@layout/tmpl_script"
android:paddingBottom="20dp"
android:layout_marginEnd="20dp"
android:layout_marginRight="20dp"
android:paddingTop="30dp"
app:layout_gravity="center" />
活动
RecyclerView recyclerView = (RecyclerView)findViewById(R.id.scripts_recycler_view);
recyclerView.setAdapter(adapter);
int columns = getResources().getInteger(R.integer.scripts_columns);
recyclerView.setLayoutManager(new GridLayoutManager(this, columns));
recyclerView.setHasFixedSize(true);
项目
<LinearLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:background="@drawable/game_border"
android:gravity="center"
android:orientation="vertical">
我有两个问题:
答案 0 :(得分:2)
(1)最简单的解决方案是添加顶部和/或底部边距,如@suraj所说。
关于(2) - 关键问题是你的物品是方形的。要使其正常工作,请设置android:layout_width="match_parent"
并更改项目的设计,以使用两个维度的实际较小尺寸(宽度或高度)(在您的情况下,您可能需要做的就是使背景为正方形)。然后在项目的LinearLayout中显示居中的内容(您已经这样做了)。你必须这样做,因为GridLayoutManager目前不支持layout_gravity。
答案 1 :(得分:0)
对于1.行之间没有空格
在item的线性布局中尝试android:layout_marginBottom="10dp"
。这应该提供每个项目下方的间距。
对于2.items不在行的中心
看起来您已为您的Recyclerview提供了正确的保证金,而且没有留下余量。
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
应在两侧给出相等的间距。 或设置
app:layout_gravity="center"
项目的线性布局。