我有以下 CardView,我想为卡片中的每个角设置不同的半径。是否可以通过 XML 或编程方式更改它们?提前致谢。
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
app:cardCornerRadius="0dp"
app:cardElevation="0dp">
</android.support.v7.widget.CardView>
编辑 正如 Avinash 建议的那样,我正在寻找这个 lib github.com/captain-miao/OptionRoundCardview 的行为,但使用默认的 CardView 项目。如果无法单独更改它,这个库是一个很好的方法。
原文由 Juanje 发布,翻译遵循 CC BY-SA 4.0 许可协议
它需要官方的
MaterialCardView
(它扩展了androidx.cardview.widget.CardView
)和至少 1.1.0 版本的 Material 组件库。添加到您的布局
MaterialCardView
:定义继承 材质卡样式 的自定义样式(例如
Widget.MaterialComponents.CardView
)并使用shapeAppearanceOverlay
属性:您也可以通过编程方式实现它。
只需将自定义
ShapeAppearanceModel
应用到卡片的角落。就像是:
注意: 它需要库的 1.1.0 版本。
使用 Jetpack Compose,您可以在 — 中使用 —
Card
shape
参数。就像是: