320x100
안드로이드에서는 기본적으로 제공하는
캘린더가 있으며,
이번 글은 제공하는 캘린더의
오늘 날짜로 이동, 선택된 날짜 가져오기(날짜 클릭 시 이벤트)
버튼을 새로 만들고
이벤트를 걸어 작업한다
코드 1 : MainActivity.kt
이번 코드에는 주의할 점이 있는데,
첫번째로 캘린더 날짜의 경우 가져올 때
클릭 이벤트를 작성해 특정 변수에 저장 해야 하는것과
두번째로 캘린더의 '월' 의 경우 '+1' 을 해줘야 하는것
세번째로 캘린더의 날짜를 강제로 수정 할 경우
캘린더 클릭 이벤트가 작동하지 않으니 주의해야 하는점이 있다
class MainActivity : AppCompatActivity() {
private lateinit var calendarView: CalendarView
private lateinit var btnToDayMove: Button
private lateinit var btnClickDayResult: Button
private lateinit var tvMsg: TextView
private var clickDate = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
calendarView = findViewById(R.id.cv_main)
btnToDayMove = findViewById(R.id.b_today)
btnClickDayResult = findViewById(R.id.b_clickResult)
tvMsg = findViewById(R.id.tv_msg)
// 최초 클릭 한 날짜 설정(오늘 날)
clickDate = SimpleDateFormat("yyyy-MM-dd").format(Date())
// 캘린더 날짜 클릭 시 작동
calendarView.setOnDateChangeListener { _, year, month, day ->
clickDate = "$year-${month + 1}-$day"
}
// 캘린더 오늘 날짜로 이동
btnToDayMove.setOnClickListener {
Date().apply {
calendarView.date = time
clickDate = SimpleDateFormat("yyyy-MM-dd").format(this)
}
}
// 선택된 날짜 가져오기
btnClickDayResult.setOnClickListener {
tvMsg.text = clickDate
}
}
}
코드 2 : activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<CalendarView
android:id="@+id/cv_main"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingStart="5dp"
android:paddingEnd="5dp">
<Button
android:id="@+id/b_today"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="오늘 날짜로 이동" />
<Space
android:layout_width="10dp"
android:layout_height="wrap_content" />
<Button
android:id="@+id/b_clickResult"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="클릭 날짜 확정" />
</LinearLayout>
<TextView
android:id="@+id/tv_msg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="none"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</LinearLayout>
320x100
'Android > Kotlin' 카테고리의 다른 글
[Android][Kotlin] 알람매니저(AlarmManager)를 이용한 알림(Notification) 호출하기 (0) | 2022.10.14 |
---|---|
[Android][Kotlin] 알림(Notification) 생성, 호출하기 (0) | 2022.10.13 |
[Android][Kotlin] Thread 상속 받고 Thread 일시정지 (0) | 2022.10.07 |
[Android][Kotlin] Dialog 커스텀 및 스타일 수정 (0) | 2022.10.05 |
[Android][Kotlin] 특정 시간 뒤 작업 Handler postDelayed (0) | 2022.10.04 |