LinearLayoutManager在卡片之间创建空间

时间:2016-03-02 23:23:05

标签: java android

我目前正在使用RecyclerView来显示卡片列表。 它适用于ListViewArrayListAdapter,但现在发生了一些奇怪的事情。

首次加载列表时,会显示正在显示的3张第一张卡片。但是未显示的那些在每一个下面都有很大的空间。

它与LayoutManager有关,因为Android doc说它是管理显示与否的实体以及如何显示它。

就我而言,我正在使用LinearLayoutManager

以下是我Fragment内部初始化的一些代码:

layoutManager = new LinearLayoutManager(getActivity());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
listAdapter = new EventsListAdapter(events);
recyclerView.setAdapter(listAdapter);
recyclerView.setLayoutManager(layoutManager);

这是RecyclerView布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<android.support.v7.widget.RecyclerView
    android:id="@+id/events_list_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" />
</RelativeLayout>

最后我的CardView声明

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/event_row_cardview">
    ...

1 个答案:

答案 0 :(得分:0)

我找到了问题的根源。

我的CardView被包裹在LinearLayout内,其属性为android:layout_height="match_parent",所以每次呈现时都会占据屏幕的整个高度。

我通过将属性更改为android:layout_height="wrap_content"

来修复它