如何摆脱 CardView 中 ImageView 周围的空白
How to get rid of blank spaces around an ImageView inside a CardView
在屏幕截图下方,我使用 ImageView
将图像插入到 CardView
中。
问题是,我好像没法去掉图片下面的空白space。 (用浅蓝色突出显示)
我试过a solution that works,但是需要我明确指定图片高度,我尽量不指定,因为来源可以是多种多样的,我需要图片灵活缩放up/down(具有相同的纵横比)取决于卡片宽度。
截图如下:
这是代码片段:
<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
自动环绕图像(不留空 space)并且不明确指定图像高度?
将 <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>
尝试将 scaleType 更改为 android:scaleType="centerCrop"
,或其他一些 scaleType。
看这里:
https://developer.android.com/reference/android/widget/ImageView.ScaleType.html
在屏幕截图下方,我使用 ImageView
将图像插入到 CardView
中。
问题是,我好像没法去掉图片下面的空白space。 (用浅蓝色突出显示)
我试过a solution that works,但是需要我明确指定图片高度,我尽量不指定,因为来源可以是多种多样的,我需要图片灵活缩放up/down(具有相同的纵横比)取决于卡片宽度。
截图如下:
这是代码片段:
<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
自动环绕图像(不留空 space)并且不明确指定图像高度?
将 <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>
尝试将 scaleType 更改为 android:scaleType="centerCrop"
,或其他一些 scaleType。
看这里:
https://developer.android.com/reference/android/widget/ImageView.ScaleType.html