android - 使 ImageView 适合 CardView 的宽度

标签 android imageview android-appcompat android-cardview

我有一个带圆角的 CardView,我希望在顶部有一个 ImageView,如以下 Material 设计指南中的示例所示。

components_cards8.png

<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 设置为 0dpImageView 适合卡片,就像我想要的那样。

image_1

但是,material design guidelines说明卡片应该有圆角,而不是方角。

我遇到的问题是当我将 card_view:cardCornerRadius 设置为 0dp 以外的其他值时,例如4dp,则发生以下情况:

image_2

可以看出,ImageView 不适合CardView

我的问题是,当 ImageView 有圆角时,如何使它适合 CardView 的布局。

最佳答案

你需要做两件事:

1) 在您的 CardView 上调用 setPreventCornerOverlap(false)

2) 将 rounded Imageview 放入 CardView

关于舍入您的 ImageView ,我遇到了同样的问题,所以我制作了一个库,您可以在每个角上设置不同的半径。有一个很好的库(vinc3m1 的 RoundedImageView)支持 ImageView 上的圆角,但它只支持每个角的半径相同。但我希望它左上角和右上角圆角。

最后我得到了我想要的结果,如下所示。

https://github.com/pungrue26/SelectableRoundedImageView

Rounded ImageView inside CardView

关于android - 使 ImageView 适合 CardView 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27394300/

相关文章:

android - 在 Android 上使用 OpenSL 混合音效

java - Android 从抽屉导航上的 ActionLayout 获取开关

android - 为什么工具栏在屏幕中间?

android - 如何解决此错误:无法解决:com.android.support:appcompat-v7:26.1.0

android - 符合 Google Play 政策的移动广告

android - 如何启用 Google Play 应用签名

android - 从 imageview 和 textview 创建图像?

Android ImageView 布局重力不起作用

Android 调整 ImageView 大小导致 View 容器调整大小

android - 升级到 AppCompat v22.1.0,现在得到 IllegalArgumentException : AppCompat does not support the current theme features