RecyclerView,CardView,卡之间的“死”空间

时间:2016-08-25 19:22:10

标签: android xamarin

我实现了一个RecyclerView,其中我从列表中显示了一些CardView,但问题是,当显示卡之间有太多空间时,空间与CardView具有的高度相同,并且仅在每个空间的底部卡。

这是我的代码:

CardView:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:cardview="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:padding="5dp">
<android.support.v7.widget.CardView
    android:layout_width="fill_parent"
    android:layout_height="245dp"
    android:layout_gravity="center_horizontal"
    cardview:cardElevation="4dp"
    cardview:cardCornerRadius="5dp"
    android:layout_marginBottom="0dp">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="240dp"
        android:orientation="vertical"
        android:padding="8dp">
        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="100dp"
            android:id="@+id/ivProduct"
            android:scaleType="centerCrop" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#333333"
            android:text="Photo Title"
            android:id="@+id/txtTipo"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="5dp" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#333333"
            android:text="Photo Title"
            android:id="@+id/txtdescripcion"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="5dp" />
    </LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>

RecyclerView:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
 <android.support.v7.widget.RecyclerView
  android:id="@+id/recyclerView"
  android:scrollbars="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" />
 </LinearLayout>

1

[![2] [2] [2]

enter image description here

2 个答案:

答案 0 :(得分:2)

RecyclerView中的LinearLayout高度为fill_parent,因此高度取决于屏幕高度,只需更改为wrap_content

 <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:cardview="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"         <!--change in this line-->
    android:gravity="center_horizontal"
    android:padding="5dp">
<android.support.v7.widget.CardView
    android:layout_width="fill_parent"
    android:layout_height="245dp"
    android:layout_gravity="center_horizontal"
    cardview:cardElevation="4dp"
    cardview:cardCornerRadius="5dp"
    android:layout_marginBottom="0dp">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="240dp"
        android:orientation="vertical"
        android:padding="8dp">
        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="100dp"
            android:id="@+id/ivProduct"
            android:scaleType="centerCrop" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#333333"
            android:text="Photo Title"
            android:id="@+id/txtTipo"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="5dp" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#333333"
            android:text="Photo Title"
            android:id="@+id/txtdescripcion"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="5dp" />
    </LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>  

答案 1 :(得分:0)

我建议你直接看看我们的样本:

https://github.com/xamarin/monodroid-samples/tree/master/android5.0/RecyclerViewer/RecyclerViewer

您可以通过多种方式解决这个问题,但总体问题是您要让RecyclerView高度范围内的孩子足以填满整个屏幕。因此,你应该只给它们足够的高度wrap_content

https://github.com/xamarin/monodroid-samples/blob/master/android5.0/RecyclerViewer/RecyclerViewer/Resources/layout/PhotoCardView.axml#L5

https://github.com/xamarin/monodroid-samples/blob/master/android5.0/RecyclerViewer/RecyclerViewer/Resources/layout/PhotoCardView.axml#L8