I have the following CardView and I want to set different radius for each corner in the card. Is it possible to change them by XML or programmaticaly? Thanks in advance.
<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> EDIT As Avinash suggest, I am looking for the behaviour of this lib github.com/captain-miao/OptionRoundCardview but using the default CardView item. If it is not possible to change it individually, this lib is a good approach.
It requires the official MaterialCardView (which extends the androidx.cardview.widget.CardView) and at least the version 1.1.0 of the Material components library.
Add to your layout the MaterialCardView:
    <com.google.android.material.card.MaterialCardView         style="@style/CustomCardViewStyle"         ...>            </com.google.android.material.card.MaterialCardView> Define a custom style inheriting a material card style (for example Widget.MaterialComponents.CardView) and use the shapeAppearanceOverlay attribute:
  <style name="CustomCardViewStyle" parent="@style/Widget.MaterialComponents.CardView">      <item name="shapeAppearanceOverlay">@style/ShapeAppearanceOverlay_card_custom_corners</item>   </style>     <style name="ShapeAppearanceOverlay_card_custom_corners" parent="">     <item name="cornerFamily">rounded</item>     <item name="cornerSizeTopRight">4dp</item>     <item name="cornerSizeTopLeft">8dp</item>     <item name="cornerSizeBottomRight">16dp</item>     <item name="cornerSizeBottomLeft">0dp</item>   </style> 
You can also achieve it programmatically.
 Just apply a custom ShapeAppearanceModel to the corners of the card.
 Something like:
float radius = getResources().getDimension(R.dimen.my_corner_radius); cardView.setShapeAppearanceModel(   cardView.getShapeAppearanceModel()       .toBuilder()       .setTopLeftCorner(CornerFamily.ROUNDED,..)       .setTopRightCorner(CornerFamily.ROUNDED,..)       .setBottomRightCorner(CornerFamily.ROUNDED,radius)       .setBottomLeftCornerSize(0)       .build()); Note: it requires the version 1.1.0 of the library.
With Jetpack compose you can use the shape parameter in the Card.
Something like:
    Card(         shape = RoundedCornerShape(            4.dp,            8.dp,            16.dp,            2.dp)     ){         Text("Content Card")     } 
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With