【问题标题】:How to position CardViews next to each other?如何将 CardViews 彼此相邻放置?
【发布时间】:2016-03-21 20:06:31
【问题描述】:

我想做Google PlayStore-like-CardView layout。但是,我没有设法并排放置卡片视图,而是将它们垂直列出,自上而下。

屏幕截图:

cardview.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    android:id="@+id/card_view"
    android:layout_width="150dp"
    android:layout_height="200dp"
    android:layout_margin="5dp"
    android:layout_gravity="center"
    card_view:cardCornerRadius="2dp"
    card_view:contentPadding="10dp"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto">

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

            <ImageView
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:id="@+id/img_appicon"
                android:layout_alignParentTop="true"
                android:layout_alignLeft="@+id/tv_appname"
                android:layout_alignStart="@+id/tv_appname" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="App Name"
                android:id="@+id/tv_appname"
                android:layout_below="@+id/img_appicon"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="27dp" />
        </RelativeLayout>
</android.support.v7.widget.CardView>

任何想法如何将这些 CardView 并排放置?

谢谢。

【问题讨论】:

    标签: android android-recyclerview android-cardview


    【解决方案1】:

    您是否尝试过将它们放在宽度为 match_parent、高度为 wrap_content、方向为水平的线性布局中?

    <?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:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    
        <android.support.v7.widget.CardView
            android:id="@+id/card_view1"
            android:layout_width="150dp"
            android:layout_height="200dp"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            card_view:cardCornerRadius="2dp"
            card_view:contentPadding="10dp">
    
            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
    
                <ImageView
                    android:id="@+id/img_appicon"
                    android:layout_width="100dp"
                    android:layout_height="100dp"
                    android:layout_alignLeft="@+id/tv_appname"
                    android:layout_alignParentTop="true"
                    android:layout_alignStart="@+id/tv_appname" />
    
                <TextView
                    android:id="@+id/tv_appname"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/img_appicon"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="27dp"
                    android:text="App Name"
                    android:textAppearance="?android:attr/textAppearanceMedium" />
            </RelativeLayout>
        </android.support.v7.widget.CardView>
    
        <android.support.v7.widget.CardView
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
            android:id="@+id/card_view2"
            android:layout_width="150dp"
            android:layout_height="200dp"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            card_view:cardCornerRadius="2dp"
            card_view:contentPadding="10dp">
    
            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">
    
                <ImageView
                    android:id="@+id/img_appicon2"
                    android:layout_width="100dp"
                    android:layout_height="100dp"
                    android:layout_alignLeft="@+id/tv_appname2"
                    android:layout_alignParentTop="true"
                    android:layout_alignStart="@+id/tv_appname2" />
    
                <TextView
                    android:id="@+id/tv_appname2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/img_appicon2"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="27dp"
                    android:text="App Name"
                    android:textAppearance="?android:attr/textAppearanceMedium" />
            </RelativeLayout>
        </android.support.v7.widget.CardView>
    </LinearLayout>
    

    【讨论】:

    • 我没有,现在试试,让你知道。
    • 我已经尝试过您的建议,但仍然与我上面发布的屏幕截图中的情况相同。
    • 我在上面发布了代码,它 100% 对我有用。刚刚因为冲突改变了id,所以根据你的代码设置它们
    • 啊,好的,是的,现在它可以工作了,但这意味着我需要对 CardViews 进行硬编码。我不知道当用户使用它时会有多少。我将动态分配卡片内容。还是我错过了什么?这也有可能 - 没有太多代码?
    • 你能分享你用来动态附加卡片视图的代码吗?
    猜你喜欢
    • 2020-07-22
    • 2015-07-27
    • 1970-01-01
    • 2022-01-20
    • 2010-12-09
    • 2019-11-05
    • 2017-05-08
    • 2020-12-17
    • 1970-01-01
    相关资源
    最近更新 更多