如何摆脱CardView内部的ImageView周围的空白区域

时间:2016-08-14 18:08:42

标签: android imageview cardview

在屏幕截图下方,我使用ImageView将图片插入CardView

问题是,我似乎无法摆脱Image下方的空白空间。 (以浅蓝色突出显示)

我试过了a solution that works,但它要求我明确指定图像高度,我尽量不要这样做,因为源可以是各种各样的,我需要图像灵活地放大/缩小(使用相同的图像)宽高比)取决于卡片宽度。

这是截图:

enter image description here

这是代码片段:

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardCornerRadius="2dp"
    card_view:cardElevation="2dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="7dp">
        <TextView
            android:id="@+id/caption_text"
            android:text="Hello World!"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:scaleType="fitStart"
            android:layout_below="@id/caption_text"
            android:src="@drawable/food"/>
    </RelativeLayout>
</android.support.v7.widget.CardView>

那么,有没有办法让CardView自动环绕图像,(不留任何空白空间)并且没有明确指定图像高度?

2 个答案:

答案 0 :(得分:2)

<RelativeLayout>身高更改为wrap_content。目前,它在高度上具有循环依赖性。

<强> [编辑]

我们需要为图像设置属性android:adjustViewBounds="true"以便与源一起缩放。默认为false

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardCornerRadius="2dp"
    card_view:cardElevation="2dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="7dp">
        <TextView
            android:id="@+id/caption_text"
            android:text="Hello World!"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:adjustViewBounds="true"
            android:layout_below="@id/caption_text"
            android:src="@drawable/food"/>
    </RelativeLayout>
</android.support.v7.widget.CardView>

答案 1 :(得分:1)

尝试将scaleType更改为android:scaleType="centerCrop"或其他某种scaleType 见这里:
 https://developer.android.com/reference/android/widget/ImageView.ScaleType.html