How to show date picker with Jetpack compose?
Last updated Aug 08, 2021 In this Jetpack compose tutorial we will learn how to show Date Picker in Android application with jetpack compose.
Date Picker allows you to select the date consisting of day, month and year in your custom user interface.
Let's get started
Step 1: Create android application in android studio
Step 2: Follow step for setup Jetpack Compose with Android Studio
Step 3: Add Date Picker in MainActivity.kt
@Composable
fun DatePickerDemo(context: Context) {
val mYear: Int
val mMonth: Int
val mDay: Int
val now = Calendar.getInstance()
mYear = now.get(Calendar.YEAR)
mMonth = now.get(Calendar.MONTH)
mDay = now.get(Calendar.DAY_OF_MONTH)
now.time = Date()
val date = remember { mutableStateOf("") }
val datePickerDialog = DatePickerDialog(
context,
{ _: DatePicker, year: Int, month: Int, dayOfMonth: Int ->
val cal = Calendar.getInstance()
cal.set(year, month, dayOfMonth)
date.value = getFormattedDate(cal.time, "dd MMM,yyy")
}, mYear, mMonth, mDay
)
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Button(onClick = {
datePickerDialog.show()
}) {
Text(text = "Click To Open Date Picker")
}
Spacer(modifier = Modifier.size(16.dp))
Text(text = "Selected date: ${date.value}")
}
}
|
Images
Set miniDate and maxDate to date Picker with Compose
val day1=Calendar.getInstance()
day1.set(Calendar.DAY_OF_MONTH, 1)
datePickerDialog.datePicker.minDate = day1.timeInMillis
datePickerDialog.datePicker.maxDate = Calendar.getInstance().timeInMillis
|
Full Code
package com.rrtutors.jetpackcomposeintro
import android.app.DatePickerDialog
import android.content.Context
import android.os.Bundle
import android.widget.DatePicker
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import java.util.*
class DatePickerCompose : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
// A surface container using the 'background' color from the theme
Surface(color = MaterialTheme.colors.background) {
DatePickerDemo(this)
}
}
}
}
}
@Composable
fun DatePickerDemo(context: Context) {
val mYear: Int
val mMonth: Int
val mDay: Int
val now = Calendar.getInstance()
mYear = now.get(Calendar.YEAR)
mMonth = now.get(Calendar.MONTH)
mDay = now.get(Calendar.DAY_OF_MONTH)
now.time = Date()
val date = remember { mutableStateOf("") }
val datePickerDialog = DatePickerDialog(
context,
{ _: DatePicker, year: Int, month: Int, dayOfMonth: Int ->
val cal = Calendar.getInstance()
cal.set(year, month, dayOfMonth)
date.value = getFormattedDate(cal.time, "dd MMM,yyy")
}, mYear, mMonth, mDay
)
val day1= Calendar.getInstance()
day1.set(Calendar.DAY_OF_MONTH, 1)
datePickerDialog.datePicker.minDate = day1.timeInMillis
datePickerDialog.datePicker.maxDate = Calendar.getInstance().timeInMillis
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Button(onClick = {
datePickerDialog.show()
}) {
Text(text = "Click To Open Date Picker")
}
Spacer(modifier = Modifier.size(16.dp))
Text(text = "Selected date: ${date.value}")
}
}
|
Conclusion: In this jetpack compose tutorial we covered how to create date picker dialog and how set the min and max date for the dialog
Article Contributed By :
|
|
|
7192 Views
|