Open In App

How to Change CardView Color When Selected in Android?

Last Updated : 08 Apr, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

CardView is a UI component in Android Studio that provides a simple way to display content with a raised or elevated appearance. It’s part of the Android Support Library, which means it’s compatible with Android devices running Android 5.0 (API level 21) or higher. A sample video is given below to get an idea about what we are going to do in this article.

Step-by-Step Implementation

Step 1: Create a New Project in Android Studio

To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. Note that select Java as the programming language.

Step 2: Working with the purple_bg.xml file

Navigate to the app > res > drawable > purple_bg.xml and add the below code to that file. Below is the code for the purple_bg.xml file.

XML




<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true">
        <shape
            android:shape="rectangle">
            <corners
                android:radius="15dp">
            </corners>
            <gradient
                android:startColor="#615EE8"
                android:endColor="#7F6CEF"/>
        </shape>
    </item>
</selector>


Step 3: Working with the silver_bg.xml file

Navigate to the app > res > drawable > silver_bg.xml and add the below code to that file. Below is the code for the silver_bg.xml file.

XML




<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
            android:shape="rectangle">
            <corners
                android:radius="15dp">
            </corners>
            <gradient
                android:startColor="#F2F1F8"
                android:endColor="#E7E7FC"/>
        </shape>
    </item>
</selector>


Step 4: Working with the activity_main.xml file

Navigate to the app > res > layout > activity_main.xml and add the below code to that file. Below is the code for the activity_main.xml file.

XML




<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  
    <androidx.cardview.widget.CardView
        android:id="@+id/cardView"
        android:layout_width="match_parent"
        android:layout_height="190dp"
        android:layout_centerInParent="true"
        app:cardCornerRadius="22dp"
        app:cardUseCompatPadding="true"
        app:cardElevation="4dp"
        android:foreground="@drawable/purple_bg"
        android:clickable="true" >
  
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/silver_bg">
        </LinearLayout>
  
    </androidx.cardview.widget.CardView>
  
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/cardView"
        android:gravity="center"
        android:text="Changing Card Color on Click"
        android:textStyle="bold|italic"
        android:textColor="#2F8C46"
        android:textSize="20sp" />
  
</RelativeLayout>


Step 5: Working with the MainActivity.java file

Go to the MainActivity.java file and refer to the following code. Below is the code for the MainActivity.java file.

Java




package com.anas.gfghover;
  
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
  
public class MainActivity extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}


Output:



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads