Android - CardView 变成菱形,因为半径太大

Android - CardView becomes a diamond shape because radius too large

我在我的应用程序中使用 android.widget.CardView

在我的Android11设备中,当radius大于View时,会自动调整为View的一半大小。(不知道是哪个版本调整的)

低系统版本(我用Android7.1测试),当半径大于View时,CardView会变成菱形

谁知道为什么以及如何解决?谢谢

很多时候,Glide 库用于加载图像。这个库可以帮助圆边如下

Glide.with(context)
        .load(url)
        .circleCrop()
        .into(imageView)

和这个图书馆交朋友,你会很开心。不仅可以帮助形象成型,还能正确使用内存https://github.com/bumptech/glide

P.S:在我看来,使用 CardView 对您来说是非常有限的。

您可以使用约束布局作为根元素,并根据需要使用圆形(矩形)作为背景,并将图像放在布局中。

为了保持形状我经常使用下一个属性(示例如下): app:layout_constraintDimensionRatio="W,1:2".

在你的情况下比率必须是1:1因为它是圆而不是椭圆,那么你可以使用 app:layout_constraintDimensionRatio="W,1:1"app:layout_constraintDimensionRatio="H,1:1"

我不确定这是否适用于 CardView,但它适用于 ConstraintLayout。

这是在androidXML

中使用卡片视图使图像获得圆形边框的最常见且最简单的方法之一

首先在您的 XML 中创建一个卡片视图,并在其中创建一个图像视图,其宽度和高度都比卡片视图小 1dp,然后尝试根据您的要求调整 cardCornerRadius,即就这么简单

我在这里使用androidx.cardview.widget.CardView

<androidx.cardview.widget.CardView
            android:layout_width="70dp"
            android:layout_height="70dp"
            app:cardCornerRadius="35dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true">

            <ImageView
                android:id="@+id/rounded_profile_img"
                android:layout_width="69dp"
                android:layout_height="69dp"
                android:scaleType="centerCrop"/>

        </androidx.cardview.widget.CardView>

谢谢希望大家喜欢,对大家有帮助。