【发布时间】:2020-10-04 06:03:58
【问题描述】:
我已将 CardView 的角半径设置为 50 dp 以获得最圆的角。但是在某些手机中(我在 android 8 中看到过),卡片背景颜色正在被修剪。虽然阴影/卡片高度是圆形的,但背景颜色不是。这里可能出了什么问题? 提前致谢。
【问题讨论】:
-
请发布您的代码
标签: android background-color android-cardview cornerradius
我已将 CardView 的角半径设置为 50 dp 以获得最圆的角。但是在某些手机中(我在 android 8 中看到过),卡片背景颜色正在被修剪。虽然阴影/卡片高度是圆形的,但背景颜色不是。这里可能出了什么问题? 提前致谢。
【问题讨论】:
标签: android background-color android-cardview cornerradius
在 xml 中的 CardView 上设置 android:outlineProvider="none" 为我解决了这个问题!
【讨论】:
不要使用50dp 的圆角半径,而是使用shapeAppearanceOverlay 属性来定义带有50% 的圆角:
<com.google.android.material.card.MaterialCardView
app:shapeAppearanceOverlay="@style/ButtomShape50"
app:cardBackgroundColor="@color/...."
...>
与:
<style name="ButtomShape50">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">50%</item>
</style>
您可以通过编程方式:
cardView.setShapeAppearanceModel(cardView.getShapeAppearanceModel()
.toBuilder()
.setAllCorners(new RoundedCornerTreatment()).setAllCornerSizes(new RelativeCornerSize(0.5f))
.build());
关于新的RelativeCornerSize(0.5f) 的注释:它在1.2.0-beta01 中发生了变化。之前是new RelativeCornerSize(50))。
在您的情况下,您也可以使用FloatingActionButton 或ExtendedFloatingActionButton,而不使用CardView。
<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
app:elevation="4dp"
app:shapeAppearanceOverlay="@style/ButtomShape50"/>
【讨论】:
MaterialCardView 扩展了androidx.cardview.widget.CardView,它由 Google 在官方材料组件库中提供。你是什么意思?它是一个静态资源,但您也可以通过编程方式进行。
您是否使用android:background 作为卡片视图的背景颜色?你应该使用app:cardBackgroundColor。
【讨论】: