繁体   English   中英

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

[英]RecyclerView, CardView, “dead” space between cards

我实现了一个RecyclerView,其中从列表中显示了一些CardViews,但是问题是当显示时,卡之间的空间很大,该空间与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]

在此处输入图片说明

您在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>  

我建议您直接看一下我们的示例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM