在Android中使用带有StaggeredGridLayoutManager的RecyclerView
时,单元格不会交错<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view"
android:layout_width="300dp"
android:layout_height="226dp"
card_view:cardUseCompatPadding="true"
card_view:cardCornerRadius="8dp"
android:layout_marginBottom="16dp">
<RelativeLayout
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="center">
<!-- android:src="@drawable/three"-->
<TextView
android:id="@+id/price"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="13sp"
android:text="$100"
android:gravity="center"
android:layout_below="@+id/country_photo"
android:layout_marginTop="2sp"
android:background="#ffffff"/>
<TextView
android:id="@+id/country_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="13sp"
android:text="@string/country_name"
android:gravity="center"
android:layout_marginTop="3sp"
android:layout_below="@+id/price"
android:background="#ffffff"/>
<TextView
android:id="@+id/Descripition"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="13sp"
android:text="Descripition"
android:layout_marginBottom="2dp"
android:gravity="center"
android:layout_below="@+id/country_name"
android:layout_marginTop="3sp"
android:background="#ffffff"/>
<ImageView
android:id="@+id/country_photo"
android:layout_width="150dp"
android:layout_height="140dp"
android:contentDescription="@string/action_settings"
android:src="@drawable/three"
android:scaleType="fitXY"
android:gravity="center"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
答案 0 :(得分:1)
您需要将CardView
android:layout_height
设置为wrap_content
,否则每个CardView
都会有300dp
的固定高度,这意味着他们都将是同一个高度。
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view"
android:layout_width="300dp"
android:layout_height="wrap_content"
card_view:cardUseCompatPadding="true"
card_view:cardCornerRadius="8dp"
android:layout_marginBottom="16dp">
<RelativeLayout
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="center">
<!-- android:src="@drawable/three"-->
<TextView
android:id="@+id/price"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="13sp"
android:text="$100"
android:gravity="center"
android:layout_below="@+id/country_photo"
android:layout_marginTop="2sp"
android:background="#ffffff"/>
<TextView
android:id="@+id/country_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="13sp"
android:text="@string/country_name"
android:gravity="center"
android:layout_marginTop="3sp"
android:layout_below="@+id/price"
android:background="#ffffff"/>
<TextView
android:id="@+id/Descripition"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="13sp"
android:text="Descripition"
android:layout_marginBottom="2dp"
android:gravity="center"
android:layout_below="@+id/country_name"
android:layout_marginTop="3sp"
android:background="#ffffff"/>
<ImageView
android:id="@+id/country_photo"
android:layout_width="150dp"
android:layout_height="140dp"
android:contentDescription="@string/action_settings"
android:src="@drawable/three"
android:scaleType="fitXY"
android:gravity="center"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />