我有一个带圆角的 CardView
,我希望在顶部有一个 ImageView
,如以下 Material 设计指南中的示例所示。
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
card_view:cardCornerRadius="4dp">
<!-- ... -->
</android.support.v7.widget.CardView>
然后在 CardView
我有这个 ImageView
<ImageView
android:id="@+id/imageView"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:scaleType="centerCrop"
android:src="@drawable/default_cover" />
如果我将 card_view:cardCornerRadius
设置为 0dp
则 ImageView
适合卡片,就像我想要的那样。
但是,material design guidelines说明卡片应该有圆角,而不是方角。
我遇到的问题是当我将 card_view:cardCornerRadius
设置为 0dp
以外的其他值时,例如4dp
,则发生以下情况:
可以看出,ImageView
不适合CardView
。
我的问题是,当 ImageView
有圆角时,如何使它适合 CardView
的布局。
最佳答案
你需要做两件事:
1) 在您的 CardView 上调用 setPreventCornerOverlap(false)
。
2) 将 rounded Imageview 放入 CardView
关于舍入您的 ImageView ,我遇到了同样的问题,所以我制作了一个库,您可以在每个角上设置不同的半径。有一个很好的库(vinc3m1 的 RoundedImageView)支持 ImageView 上的圆角,但它只支持每个角的半径相同。但我希望它仅左上角和右上角圆角。
最后我得到了我想要的结果,如下所示。
https://github.com/pungrue26/SelectableRoundedImageView
关于android - 使 ImageView 适合 CardView 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27394300/