【问题标题】:Android - CardView becomes a diamond shape because radius too largeAndroid - CardView 变成菱形,因为半径太大
【发布时间】:2021-10-02 13:11:30
【问题描述】:

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

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

在较低的系统版本(我使用Android 7.1测试),当半径大于View时,CardView会变成菱形。

有人知道为什么以及如何解决吗?谢谢

【问题讨论】:

  • 对我来说这与 CardView 无关,屏幕截图中的问题似乎与您的 ImageView 或显示作者图标的类似问题有关
  • 使用任何 roudedImageview 来制作像implementation 'com.makeramen:roundedimageview:2.3.0' 这样的圆圈,而不是 CardView。探索Liberary Link
  • 它适用于大多数设备,实际上我见过这种行为的唯一设备是运行 android 7 的华为 Mate 9(我不知道华为和夏莫有什么问题,他们总是很烦人 -_ -)。我设法通过在代码中将角​​设置为高度的一半来解决这个问题

标签: java android android-cardview


【解决方案1】:

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 中效果很好。

【讨论】:

    【解决方案2】:

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

    首先在您的 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>
    
    

    谢谢你希望你会喜欢它,它对每个人都有帮助。

    【讨论】:

      猜你喜欢
      • 2015-06-03
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多