RecyclerView的GridLayoutManager - 在较短的屏幕上行重叠

时间:2017-04-11 06:10:10

标签: android android-recyclerview gridlayoutmanager

我有一个RecyclerView,其元素需要以4列显示。我通过GridLayoutManager执行此操作,如下所示:

    mActivityBinding.bwRv.setAdapter(mAdapter);
    GridLayoutManager gridLayoutManager = new GridLayoutManager(MysActivityTwo.this, 4);
    mActivityBinding.bwRv.setLayoutManager(gridLayoutManager);

我的个别项目布局如下所示:

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="@dimen/bw_items_width"
    android:layout_height="100dp"
    android:layout_alignEnd="@+id/bw_et_questions"
    android:layout_alignStart="@+id/bw_et_questions"
    android:layout_below="@+id/bw_et_questions"
    android:clickable="true"
    android:foreground="?android:attr/selectableItemBackground"
    card_view:cardCornerRadius="2dp"
    app:optCardBackgroundColor="@color/dark_font"
    card_view:cardElevation="2dp">
</android.support.v7.widget.CardView>

所以它有固定的高度和宽度。

在Normal较大的屏幕中正确显示,但在较小的屏幕中,列相互重叠。有没有什么方法可以指定通常在较大的屏幕中它应该拾取4列但在较小的屏幕中它应该以某种方式包裹而不重叠?

2 个答案:

答案 0 :(得分:0)

您可以根据屏幕尺寸定义布局。请参阅此link

对于大屏幕,您可以在res / layouts / layout-large中定义布局,在res / layout中定义小布局。

答案 1 :(得分:0)

使用此代码分隔Gridview的项目。为间距创建一个类

 int spacingInPixels = getResources().getDimensionPixelSize(R.dimen.spacing);
    recyclerView.addItemDecoration(new SpacesItemDecoration(spacingInPixels));

并将其设置在您的RecyclerView上。

<dimen name="spacing">2dp</dimen>

将它放在dimens.xml上

{{1}}