Simple, customisable Time and Date Picker created in the "old" Android API 16 style.
Restyled with Material 2.0 guidelines and powered by RecyclerView.
Classic Material TimePicker | "Old" Android Api 16 TimePicker |
---|---|
High Resolution Demo:
https://giant.gfycat.com/LastingImpassionedGelada.webm
This library is being distributed via JitPack. AndroidX libraries are required.
Step 1:
Add Jitpack repository in root build.gradle at the end of repositories:
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
Step 2:
Add dependency in app project:
dependencies {
implementation 'com.github.michaldrabik:classicmaterialtimepicker:1.1.3'
}
This library can be used to pick time or a date.
See Sample App for full example.
Create and show time picker's CmtpTimeDialogFragment:
val timePicker = CmtpTimeDialogFragment.newInstance()
timePicker.show(supportFragmentManager, "Tag")
Set initial time with setInitialTime12()
or setInitialTime24()
method:
val timePicker = CmtpTimeDialogFragment.newInstance()
// Set initial time and initialise time picker in 12-hour time format.
timePicker.setInitialTime12(5, 15, PM)
// Set initial time and initialise time picker in 24-hour time format.
timePicker.setInitialTime24(23, 30)
timePicker.show(supportFragmentManager, "Tag")
Selected time can be retrieved with one of the listeners:
val timePicker = CmtpTimeDialogFragment.newInstance()
// Set 12-hour time format listener.
// Use this listener if time picker was initialised in 12-hour format.
timePicker.setOnTime12PickedListener { time12 ->
// Do something with picked time.
})
// Set 24-hour time format listener.
// Use this listener if time picker was initialised in 24-hour format.
timePicker.setOnTime24PickedListener { time24 ->
// Do something with picked time.
})
timePicker.show(supportFragmentManager, "Tag")
Create and show date picker's CmtpDateDialogFragment:
val datePicker = CmtpDateDialogFragment.newInstance()
datePicker.show(supportFragmentManager, "Tag")
Set initial date with setInitialDate()
method:
val datePicker = CmtpDateDialogFragment.newInstance()
// Set initial date.
datePicker.setInitialDate(10, 10, 2019)
datePicker.show(supportFragmentManager, "Tag")
Set custom separator with setCustomSeparator()
method:
val datePicker = CmtpDateDialogFragment.newInstance()
// Set custom separator. "/" is a default.
datePicker.setCustomSeparator("-")
datePicker.show(supportFragmentManager, "Tag")
Set custom years range with setCustomYearRange()
method:
val datePicker = CmtpDateDialogFragment.newInstance()
// Set custom years range.
datePicker.setCustomYearRange(2000, 2019)
datePicker.show(supportFragmentManager, "Tag")
Selected date can be retrieved with a listener:
val datePicker = CmtpDateDialogFragment.newInstance()
// Set date listener.
timePicker.setOnDatePickedListener { date ->
// Do something with picked date.
})
timePicker.show(supportFragmentManager, "Tag")
CmtpTimeDialogFragment and CmtpDateDialogFragment are being used as hosts for CmtpTimePickerView and CmtpDatePickerView views.
You can use those views by itself or host them in a different Android components (like Bottom Sheet)
Each element of the time picker can be customized:
Dialog background
Override following style in your app with your own background drawable:
<style name="CmtpDialogFrameStyle" parent="CmtpDialogTheme">
<item name="android:windowBackground">@drawable/your_background_drawable</item>
</style>
Dialog positive/negative button text
Provide custom texts while creating DialogFragment's instance:
val timePicker = CmtpDialogFragment.newInstance("Pick Time", "Hide")
timePicker.show(supportFragmentManager, "TimePickerTag")
Dialog positive button style
Override following style in your app with your own text style:
<style name="CmtpDialogPositiveButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
<item name="android:textColor">#FF0000</item>
<!-- other properties -->
</style>
Dialog negative button style
Override following style in your app with your own text style:
<style name="CmtpDialogNegativeButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
<item name="android:textColor">#FF0000</item>
<!-- other properties -->
</style>
Custom text frame drawable, text color and size
Override following style in your app with your own text style:
<style name="CmtpViewTheme">
<item name="cmtpTextFrameDrawable">@drawable/custom_text_frame</item>
<item name="cmtpTextColor">#000000</item>
<item name="cmtpTextSize">20sp</item>
</style>
See Sample App styles for an example of full customization.
1.1.4
1.1.3
1.1.2
toString()
methods for CmtpDate
and CmtpTime
classes.1.1.1
1.1.0
1.0.0
Copyright 2019 Michal Drabik
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program.
If not, see http://www.gnu.org/licenses/.