一张额外尺寸的cardview

时间:2018-02-19 20:55:10

标签: android imageview android-cardview

如您所见,一张cardview有额外的尺寸。所有其他卡片视图大小相同。我认为这是由于 android:adjustViewBounds =“true”而发生的。如何制作相同尺寸的所有卡片。我将一个对象列表传递给适配器。适配器将传递到Recycler视图。这是屏幕截图enter image description here

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.CardView
        android:id="@+id/cardView_faq"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:cardUseCompatPadding="true"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="-2dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:gravity="center"
            android:orientation="horizontal"
            android:weightSum="5">

            <ImageView
                android:id="@+id/imgView_icon"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="4"
                android:paddingLeft="16dp"
                android:paddingStart="16dp"
                android:paddingTop="16dp"
                android:paddingBottom="16dp"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"
                android:text="ImageViewIcon" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="start"
                android:gravity="center"
                android:orientation="vertical"
                android:layout_weight="1">

                <TextView
                    android:id="@+id/tv_title"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="start"
                    android:paddingTop="24sp"
                    android:paddingBottom="16sp"
                    android:paddingLeft="16dp"
                    android:paddingRight="16dp"
                    android:text="tv_title"
                    android:textSize="24sp" />

                <TextView
                    android:id="@+id/tv_sub_title"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="start"
                    android:paddingLeft="16dp"
                    android:paddingRight="16dp"
                    android:paddingBottom="16sp"
                    android:text="tv_text_other_lang"
                    android:textSize="14sp" />
            </LinearLayout>
        </LinearLayout>

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

3 个答案:

答案 0 :(得分:0)

对于不同的屏幕分辨率,您可以使用不同尺寸的静态高度。

答案 1 :(得分:0)

在LinearLayout

中放置您不想要wrap_content的高度
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="150dp"> <android.support.v7.widget.CardView android:id="@+id/cardView_faq" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardUseCompatPadding="true" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginTop="5dp" android:layout_marginBottom="-2dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:gravity="center" android:orientation="horizontal"> <ImageView android:id="@+id/imgView_icon" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:paddingLeft="16dp" android:paddingStart="16dp" android:paddingTop="16dp" android:paddingBottom="16dp" android:adjustViewBounds="true" android:scaleType="centerCrop" android:text="ImageViewIcon" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="start" android:gravity="center" android:orientation="vertical" android:layout_weight="2"> // adjust to have better space for your textview. <TextView android:id="@+id/tv_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="start" android:paddingTop="24sp" android:paddingBottom="16sp" android:paddingLeft="16dp" android:paddingRight="16dp" android:text="tv_title" android:textSize="24sp" /> <TextView android:id="@+id/tv_sub_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="start" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingBottom="16sp" android:text="tv_text_other_lang" android:textSize="14sp" /> </LinearLayout> </LinearLayout> </android.support.v7.widget.CardView> </LinearLayout>

答案 2 :(得分:0)

将卡片视图的父级从线性布局更改为相对布局解决了问题