RecyclerView with GridLayoutManager - 布局项目

时间:2016-12-18 12:39:29

标签: android android-recyclerview

我有一个带回收器的简单布局。我用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">

我有两个问题:

  1. 行之间没有空格
  2. 项目不在行内居中
  3. 我尝试了Android Studio中的所有属性,但它们没有任何效果。我用Google搜索,打开了很多问题,但我仍然没有运气。我应该使用什么神奇的属性?

    如您所见,项目位于屏幕左侧。我想把它移到中心位置。第一排和第二排之间没有空间。

    enter image description here enter image description here

2 个答案:

答案 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"

项目的线性布局。