You can have a CardView with a FrameLayout and then add the RadioGroup as a child to the FrameLayout in the CardView.
Instead of going through the hassle I would just have the xml for the RadioGroup be a CardView which contains the RadioGroup in there with an id. Accessing the radio group then is just using findViewById on the CardView
Assuming you are working with SDK 20 and above use this. Load the radio button by findViewById. This is not specifically a cardView but simulates a CardView background
Individual Radio Button File
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
android:elevation="2dp"
android:background="@drawable/temp">
<RadioButton
android:id="@+id/radioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a temp string for radio"/>
</FrameLayout
The temp drawable is as follows
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<corners android:radius="8dp" />
</shape>