android - CardView如何显示多列?

标签 android android-layout android-studio

我希望实现这样一种布局,它可以动态显示相册并根据方向(垂直或水平)更改列数。这是我要实现的目标的示例:

Image

到目前为止,我的代码看起来像这样

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="160dp"
    android:layout_height="200dp"
    android:layout_gravity="top|left"
    android:layout_weight="1"
    android:layout_margin="8dp"
    app:cardCornerRadius="0dp"
    app:elevation="5dp">

    <ImageView
        android:id="@+id/avatar"
        android:layout_width="160dp"
        android:layout_height="160dp"
        android:layout_gravity="top|center"
        android:scaleType="centerCrop"
        android:src="@drawable/wp" />

    <TextView
        android:id="@+id/album_name"
        android:layout_width="match_parent"
        android:layout_height="25dp"
        android:alpha="0.85"
        android:background="@color/light"
        android:layout_above="@+id/detail"
        android:layout_below="@+id/avatar"
        android:gravity="bottom|center"
        android:layout_alignParentBottom="true"
        android:text="Test"
        android:textColor="@color/cardview_dark_background" />
    <TextView
        android:id="@+id/detail"
        android:layout_width="match_parent"
        android:layout_height="15dp"
        android:layout_gravity="bottom|center"
        android:alpha="0.85"
        android:background="@color/light"
        android:gravity="bottom|center"
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/album_name"
        android:text="Test"
        android:textColor="@color/dim_foreground_disabled_material_dark" />


</android.support.v7.widget.CardView>
</LinearLayout>

最佳答案

这是一个GridView .在 GridView 中,您可以设置您选择的 CardView。您可以设置要垂直或水平显示多少张卡片。

示例布局:

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnWidth="90dp"
    android:numColumns="auto_fit"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
/>

现在您可以在您的 Activity 中设置它的适配器

GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new YourCustomAlbumAdapter(this));

完整的例子可以看官方Example http://developer.android.com/guide/topics/ui/layout/gridview.html

关于android - CardView如何显示多列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31699159/

相关文章:

android - 如何在android中为水平和垂直定义单独的触摸事件?

android - 将按钮缩放到屏幕大小

ScrollView 上的 Android PullTo 刷新

java - Android 如何从 Fragment 编辑操作栏菜单

android - packageDebug > 无法在 Android Studio 上封装 APK

android - flutter_ffmpeg - 如何访问输出路径?

java - 没有当前上下文的 opengl es api

具有新的 android-full-screen Activity 的 androidplot 不填满屏幕

android - 在 fragment 中注册ForActivityResult

android - build.gradle 可以防止反编译吗?