Android

[Android] 카드뷰(CardView) 레이아웃 사용 속성 및 예시

안드로이드 레이아웃 중에 CardView가 있습니다. 카드뷰(CardView)는 포커 게임을 할 때 사용하는 카드를 생각하면 이해가 빠릅니다. 카드의 코너 4군데의 코너를 라운드 처리하며, 그림자(음영)을 쉽게 표현할 수 있는 레이아웃입니다. 보통 리사이클러뷰(RecyclerView)의 아이템을 표시하는 용도로 많이 사용되고 있습니다. 

■card_view 속성

속성 내용
card_view 카드뷰 속성을 사용하기 위해 선언하는 xml 네임스페이스
card_view:cardBackgroundColor 카드뷰 배경색 지정.
card_view:contentPadding CardView 패딩 지정.
card_view:cardCornerRadius 카드뷰 모서리를 둥글게 하는 척도(코너 radius 지정)
card_view:cardElevation 카드뷰 그림자를 표시
card_view:cardUseCompatPadding true설정시 그림자(음영)을 표시할 공간을 자동으로 확보

card_view:cardElevation 값을 크게 지정할수록 그림자(음영)을 표시하기위해 하단영역의 공간이 필요합니다.

그래서 보통 카드뷰 레이아웃의 layout_marginBottom 값을 10dp로 주었다면, cardElevation값은 5dp를 주면 적당합니다.

 

간격을 늘려서 테스트해보시면 아 이런거구나 하는 감이 옵니다.

또 다른 방법으로는 card_view:cardUseCompatPadding=”true”로 설정을 합니다.

그럼 별도의 layout_marginBottom값을 지정할 필요가 없습니다. card_view:cardElevation값을 크게 하면 할수록 카드뷰의 크기는 작아집니다. 그림자를 표시해야하는 공간을 확보하기 때문입니다.

 

카드뷰 레이아웃 샘플 코드는 아래와 같습니다.

[item_container.xml]

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_marginBottom="10dp"
    card_view:cardCornerRadius="10dp"
    card_view:contentPadding="10dp"
    card_view:cardElevation="5dp">

    <LinearLayout
        android:id="@+id/intromainLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">
        <LinearLayout
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:gravity="center"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/pyeong_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAlignment="center"
                android:textStyle="bold"
                android:gravity="center"
                android:textColor="@color/colorContent"
                android:text=""
                android:textSize="20sp"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAlignment="center"
                    android:textStyle="bold"
                    android:gravity="center"
                    android:textColor="@color/colorContent"
                    android:text="IU"
                    android:textSize="20sp"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:gravity="center"
            android:orientation="horizontal">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="100dp"
                android:layout_marginLeft="5dp"
                android:gravity="center|left"
                android:orientation="vertical">
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">
                    <TextView
                        android:id="@+id/squareMeter_text"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textAlignment="center"
                        android:textColor="@color/colorContent"
                        android:gravity="center"
                        android:layout_marginLeft="5dp"
                        android:text="#"
                        android:textSize="18sp"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textAlignment="center"
                        android:textColor="@color/colorContentForB"
                        android:gravity="center"
                        android:layout_marginLeft="5dp"
                        android:text="오늘은 금요일입니다."
                        android:textSize="15sp"/>
                </LinearLayout>
                 
            </LinearLayout>
        </LinearLayout>



    </LinearLayout>

</androidx.cardview.widget.CardView>

■종속성 추가 

레이아웃 구성시 오류가 발생한다면 아래 라이브러리를 build.gradle에 추가합니다. 

dependencies {
        implementation “androidx.cardview:cardview:1.0.0”
}
   

 

[build.gradle(:app)] 

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29

    defaultConfig {
        applicationId "com.test.sample"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'androidx.navigation:navigation-fragment:2.3.1'
    implementation 'androidx.navigation:navigation-ui:2.3.1'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

}

 

[REFERENCE]

developer.android.com/guide/topics/ui/layout/cardview

 

[연관 글 더 보기]

[프로그래밍/Android] – 안드로이드 리사이클러뷰(RecyclerView)에 아이템 추가 및 삭제하기

[프로그래밍/Android] – 안드로이드 Cursor를 사용하여 데이터 가져오기(AsyncTask 활용)

[프로그래밍/Android] – 안드로이드 리사이클러뷰(RecyclerView)를 사용하자. ListView는 버린다!!

[프로그래밍/Kotlin] – [android : kotlin] 코틀린 RecyclerView 사용방법 및 예제

 

Leave a Reply

error: Content is protected !!