如何制作高度可变的CardViews的网格布局?

use*_*886 8 android android-layout material-design

CardView在XML中定义了多个:

<android.support.v7.widget.CardView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    card_view:cardPreventCornerOverlap="false"
    card_view:cardCornerRadius="4dp">
    <LinearLayout
        android:layout_width="wrap_content"
        android:orientation="vertical"
        android:layout_height="wrap_content">
        <TextView
            android:textSize="@dimen/abc_text_size_title_material"
            android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)

对于手机,我已经将多个包装CardView在垂直方向LinearLayout:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
Run Code Online (Sandbox Code Playgroud)

对于平板电脑,我想使用网格布局,类似于Material Design规范中使用的设计,请参见此处的图像.

ViewGroup制作网格布局最好用的是什么?这些卡的高度可变,并且具有静态内容.

GridLayout 不能使用,因为卡的高度可变.

Ari*_*Roy 12

一段时间以来我遇到过同样的问题.是的,您不能使用,GridLayout因为您的卡片大小可变.那么你在寻找StaggeredGridView,它允许它的项目具有可变的大小.

您可以执行以下任一操作: -

1)您可以使用库.它们使用起来非常简单.我已经使用了两者,我可以向你保证,他们完美地完成了他们的工作.

2)您可以尝试使用Google 的RecyclerView.StaggeredGridLayoutManager.

示例代码看起来像这样的事情,

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
    recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
    recyclerView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

希望它能帮到你.


小智 1

对于平板电脑,您可以使用 2 个 LinearLayout。