From 9dee2be0646f0d3bfc2b1a5e3dd00178e6daa422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9mence=20Roumy?= Date: Fri, 23 Jun 2023 14:48:13 +0200 Subject: [PATCH] update readme + fix ui of example + refactor scroll on year selector --- README.md | 7 ++ .../multidatepickerexample/MainActivity.kt | 73 ++++++++++--------- .../multidatepicker/MultiDatePicker.kt | 4 +- 3 files changed, 48 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index aa7c779..8d46fa7 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,13 @@ dependencies { ![Basis](./doc/multiDatePicker.png) +# Features + +- [x] Single date picker +- [x] Range date picker (start date to end date) +- [x] Customizable colors +- [x] Quickly select year by clicking on the month/year title + # Usage 1. By selecting a day on the first click, it will set the startDate value. diff --git a/app/src/main/java/com/playmoweb/multidatepickerexample/MainActivity.kt b/app/src/main/java/com/playmoweb/multidatepickerexample/MainActivity.kt index 6c61eee..6590981 100644 --- a/app/src/main/java/com/playmoweb/multidatepickerexample/MainActivity.kt +++ b/app/src/main/java/com/playmoweb/multidatepickerexample/MainActivity.kt @@ -63,44 +63,51 @@ class MainActivity : ComponentActivity() { .padding(paddings) .padding(horizontal = 10.dp) .fillMaxSize(), - verticalArrangement = Arrangement.Center, ) { - Row( - modifier = Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, + Column( + Modifier + .weight(1f), + verticalArrangement = Arrangement.Bottom, ) { - Text( - text = "startDate : ", - style = MaterialTheme.typography.bodyMedium.copy(fontWeight = FontWeight.Bold), - ) - Spacer(Modifier.width(10.dp)) - Text( - text = startDate.value?.asString("dd/MM/YYYY") ?: "null", - style = MaterialTheme.typography.bodyMedium, - ) + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + text = "startDate : ", + style = MaterialTheme.typography.bodyMedium.copy(fontWeight = FontWeight.Bold), + ) + Spacer(Modifier.width(10.dp)) + Text( + text = startDate.value?.asString("dd/MM/YYYY") ?: "null", + style = MaterialTheme.typography.bodyMedium, + ) + } + Spacer(Modifier.height(5.dp)) + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + text = "endDate : ", + style = MaterialTheme.typography.bodyMedium.copy(fontWeight = FontWeight.Bold), + ) + Spacer(Modifier.width(5.dp)) + Text( + text = endDate.value?.asString("dd/MM/YYYY") ?: "null", + style = MaterialTheme.typography.bodyMedium, + ) + } + Spacer(Modifier.height(20.dp)) } - Spacer(Modifier.height(5.dp)) - Row( - modifier = Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - text = "endDate : ", - style = MaterialTheme.typography.bodyMedium.copy(fontWeight = FontWeight.Bold), - ) - Spacer(Modifier.width(5.dp)) - Text( - text = endDate.value?.asString("dd/MM/YYYY") ?: "null", - style = MaterialTheme.typography.bodyMedium, + Column( modifier = Modifier.weight(2f)) { + MultiDatePicker( + minDate = min.time, + maxDate = max.time, + startDate = startDate, + endDate = endDate, ) } - Spacer(Modifier.height(20.dp)) - MultiDatePicker( - minDate = min.time, - maxDate = max.time, - startDate = startDate, - endDate = endDate, - ) } } } diff --git a/multiDatePicker/src/main/java/com/playmoweb/multidatepicker/MultiDatePicker.kt b/multiDatePicker/src/main/java/com/playmoweb/multidatepicker/MultiDatePicker.kt index 2a84838..6e9fd07 100644 --- a/multiDatePicker/src/main/java/com/playmoweb/multidatepicker/MultiDatePicker.kt +++ b/multiDatePicker/src/main/java/com/playmoweb/multidatepicker/MultiDatePicker.kt @@ -59,9 +59,7 @@ fun MultiDatePicker( val calendar = remember { mutableStateOf(Calendar.getInstance()) } val currDate = remember { mutableStateOf(calendar.value.time) } val isSelectYear = remember { mutableStateOf(false) } - val yearScrollState = rememberLazyListState( - initialFirstVisibleItemIndex = allYears.indexOf(calendar.value.get(Calendar.YEAR)) - 3, - ) + val yearScrollState = rememberLazyListState() val pickerHeight = remember { mutableStateOf(0.dp) } LaunchedEffect(isSelectYear.value) {