만들고 싶은 달력의 모습은 아래와 같다.
이미지 파일은 https://www.iconfinder.com/ 에서 free 이미지를 받아서 이미지 크기를 줄여서 사용했다.

AndroidManifest.xml
apply plugin: 'com.android.application'
android { compileSdkVersion 28
defaultConfig { applicationId "com.link2me.android.calendar" minSdkVersion 19 targetSdkVersion 28 versionCode 1 versionName "1.0"
}
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.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation files('libs/icu4j-4_8_2.jar') }
|
Android 달력 만들기 Layout 구성을 위한 XML 파일 구조다.
전년도, 이전달, 현재 월, 다음달, 다음년도, 특정 년월 검색
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/lightgray" android:orientation="vertical" >
<LinearLayout android:id="@+id/buttonlayout" android:layout_width="fill_parent" android:layout_height="60sp" android:background="@drawable/navibar_bg" android:gravity="left|top" android:height="60sp" android:orientation="horizontal" >
<LinearLayout android:layout_width="50dp" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center">
<ImageView android:id="@+id/prevYear" android:layout_width="wrap_content" android:layout_height="35dp" android:layout_gravity="center" android:src="@drawable/double_arrow_left" > </ImageView> </LinearLayout>
<LinearLayout android:layout_width="50dp" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center"> <ImageView android:id="@+id/prevMonth" android:layout_width="wrap_content" android:layout_height="35dp" android:layout_gravity="center" android:src="@drawable/arrow_left" > </ImageView> </LinearLayout>
<TextView android:id="@+id/currentMonth" android:layout_width="fill_parent" android:layout_height="60sp" android:layout_weight="0.6" android:gravity="center" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#FFFFFF" > </TextView>
<LinearLayout android:layout_width="50dp" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center">
<ImageView android:id="@+id/nextMonth" android:layout_width="wrap_content" android:layout_height="35dp" android:layout_gravity="center" android:src="@drawable/arrow_right" > </ImageView>
</LinearLayout>
<LinearLayout android:layout_width="50dp" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center"> <ImageView android:id="@+id/nextYear" android:layout_width="wrap_content" android:layout_height="35dp" android:layout_gravity="center" android:src="@drawable/double_arrow_right" > </ImageView> </LinearLayout>
<LinearLayout android:layout_width="50dp" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center"> <ImageView android:id="@+id/selectDate" android:layout_width="wrap_content" android:layout_height="35dp" android:layout_gravity="center" android:src="@drawable/box_arrow" > </ImageView> </LinearLayout>
</LinearLayout>
<LinearLayout android:layout_width="fill_parent" android:layout_height="30dp" android:background="#e0e7ee" android:gravity="center" android:orientation="horizontal">
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="일" android:textColor="#ff0000" android:textSize="14sp" android:textStyle="bold" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="월" android:textColor="#969a9b" android:textSize="14sp" android:textStyle="bold" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="화" android:textColor="#969a9b" android:textSize="14sp" android:textStyle="bold" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="수" android:textColor="#969a9b" android:textSize="14sp" android:textStyle="bold" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="목" android:textColor="#969a9b" android:textSize="14sp" android:textStyle="bold" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="금" android:textColor="#969a9b" android:textSize="14sp" android:textStyle="bold" />
<TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="토" android:textColor="#ff0000" android:textSize="14sp" android:textStyle="bold" /> </LinearLayout>
<GridView android:id="@+id/calendar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numColumns="7" > </GridView>
</LinearLayout>
|
select_calendar_input.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="150dp" android:layout_height="wrap_content" android:orientation="vertical">
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">
<TextView android:layout_width="50dp" android:layout_height="wrap_content" android:text="년도" android:layout_marginLeft="20dp" android:textSize="12sp" />
<EditText android:id="@+id/selectYear" android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginRight="20dp" android:singleLine="true" android:inputType="number" android:textSize="16sp" android:textColor="#000000" />
</LinearLayout>
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">
<TextView android:layout_width="50dp" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="월(月)" android:textSize="12sp" />
<EditText android:id="@+id/selectMonth" android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginRight="20dp" android:singleLine="true" android:inputType="number" android:textSize="16sp" android:textColor="#000000" />
</LinearLayout> </LinearLayout>
|