LazyDatePicker
This is an Android project to offer an alternative to the native Android Date Picker.
USAGE
To make a lazy date picker add LazyDatePicker in your layout XML and add LazyDatePicker library in your project or you can also grab it via Gradle:
implementation 'com.mikhaellopez:lazydatepicker:1.1.0'
XML
<com.mikhaellopez.lazydatepicker.LazyDatePicker
android:id="@+id/lazyDatePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:ldp_text_color="@color/primary"
app:ldp_hint_color="@color/accent"
app:ldp_date_format="mm-dd-yyyy" />
You must use the following properties in your XML to change your LazyDatePicker.
Properties | Type | Default |
---|---|---|
app:ldp_text_color |
color | BLACK |
app:ldp_hint_color |
color | GRAY |
app:ldp_date_format |
mm-dd-yyyy or dd-mm-yyyy | mm-dd-yyyy |
app:ldp_show_full_date |
boolean | true |
KOTLIN
lazyDatePicker.setDateFormat(LazyDatePicker.DateFormat.MM_DD_YYYY)
lazyDatePicker.setMinDate(minDate)
lazyDatePicker.setMaxDate(maxDate)
// The date when is selected
lazyDatePicker.setOnDatePickListener { dateSelected ->
//...
}
// True or false when date is selected
lazyDatePicker.setOnDateSelectedListener { dateSelected ->
//...
}
JAVA
LazyDatePicker lazyDatePicker = findViewById(R.id.lazyDatePicker);
lazyDatePicker.setDateFormat(LazyDatePicker.DateFormat.MM_DD_YYYY);
lazyDatePicker.setMinDate(minDate);
lazyDatePicker.setMaxDate(maxDate);
lazyDatePicker.setOnDatePickListener(new LazyDatePicker.OnDatePickListener() {
@Override
public void onDatePick(Date dateSelected) {
//...
}
});
lazyDatePicker.setOnDateSelectedListener(new LazyDatePicker.OnDateSelectedListener() {
@Override
public void onDateSelected(Boolean dateSelected) {
//...
}
});
LOCAL DATE
You can used LazyLocalDatePicker
instead of LazyDatePicker
to have all method with LocalDate
instead of Date
.
XML:
<com.mikhaellopez.lazydatepicker.LazyLocalDatePicker
android:id="@+id/lazyDatePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:ldp_text_color="@color/primary"
app:ldp_hint_color="@color/accent"
app:ldp_date_format="mm-dd-yyyy" />
KOTLIN:
lazyLocalDatePicker.setDateFormat(LazyDatePicker.DateFormat.MM_DD_YYYY)
lazyLocalDatePicker.setMinLocalDate(minDate)
lazyLocalDatePicker.setMaxLocalDate(maxDate)
// The localdate when is selected
lazyLocalDatePicker.setOnLocalDatePickListener { localDateSelected ->
//...
}
// True or false when date is selected
lazyLocalDatePicker.setOnLocalDateSelectedListener { dateSelected ->
//...
}
OVERRIDE
You can override day, month & year if you want like this in your strings.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="ldp_day" tools:override="true">D</string>
<string name="ldp_month" tools:override="true">M</string>
<string name="ldp_year" tools:override="true">Y</string>
</resources>
You can also change the design of the picker by changing the dimensions like this in your dimens.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<dimen name="lazy_date_picker_width_case" tools:override="true">12dp</dimen>
<dimen name="lazy_date_picker_height_focus" tools:override="true">2.5dp</dimen>
<dimen name="lazy_date_picker_width_margin" tools:override="true">1dp</dimen>
<dimen name="lazy_date_picker_width_space" tools:override="true">6dp</dimen>
</resources>
And to finish you can also completely redefine the layout by keeping the same name layout_lazy_date_picker.xml
and keep all the ids. You can find the default one here: layout_lazy_date_picker.xml
SUPPORT ❤️
Find this library useful? Support it by joining stargazers for this repository ⭐️
And follow me for my next creations 👍
LICENCE
LazyDatePicker by Lopez Mikhael is licensed under a Apache License 2.0.