向包含 ImageView 的 Cardview 添加边框

Posted

技术标签:

【中文标题】向包含 ImageView 的 Cardview 添加边框【英文标题】:Adding border to Cardview which contains an ImageView 【发布时间】:2021-11-26 06:59:24 【问题描述】:

我想为包含 ImageView 的卡片视图添加边框。如果我使用图标作为图像(矢量图形),它会非常完美。图像位于大小为 MATCH_PARENT 的 ImageView 中,并添加到卡片视图中。 cardview应该负责边界。因此,我以这种方式设置了卡片视图的背景图像:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#fff"/>
<stroke android: android:color="#e6e6e6" />
<corners android:radius="20dp"/>
<padding android:left="0dp" android:top="0dp"
    android:right="0dp" android:bottom="0dp" />
</shape>

所以 ImageView 的图像似乎覆盖了 cardview 的背景。知道如何解决吗?

【问题讨论】:

【参考方案1】:

这不是使用drawable 的直接解决方案,但我建议使用MaterialCardView,它为您提供与使用app:strokeColorapp:strokeWidthapp:cardCornerRadius 的drawable 相同的规格:

<com.google.android.material.card.MaterialCardView
    android:layout_
    android:layout_
    app:cardCornerRadius="20dp"
    app:strokeColor="#e6e6e6"
    app:strokeWidth="1dp">

    <ImageView
        android:id="@+id/imageView"
        android:layout_
        android:layout_
        android:layout_margin="1dp"
        android:background="@drawable/my_image" />
</com.google.android.material.card.MaterialCardView>

注意:添加到ImageView的边距等于卡片笔划,因此它不会被卡片笔划覆盖,如果您愿意,可以将其删除。

【讨论】:

以上是关于向包含 ImageView 的 Cardview 添加边框的主要内容,如果未能解决你的问题,请参考以下文章

每个 ImageView 都需要 CardView 吗?

使ImageView适合CardView的宽度

当我将 ImageView 添加到 CardView 或 Fragment 时,为啥我的应用程序会崩溃?

ImageView 在 cardView 中不匹配 - Android

在 ImageView 中放置许多 TextView

为啥我的图像没有显示在 imageView 中?