Datepicker-AGN HUB
DatePicker in Kotlin
The DatePicker widget is used to select a date (day, month, and year) from a dialog or inline. In Android, there are two primary ways to use a DatePicker:
DatePickerDialog: A dialog that allows the user to pick a date.
DatePicker Widget: An inline widget for selecting a date.
1. DatePickerDialog Example
Kotlin Code
import android.app.DatePickerDialog
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import java.util.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btnShowDatePicker: Button = findViewById(R.id.btnShowDatePicker)
val textViewDate: TextView = findViewById(R.id.textViewDate)
btnShowDatePicker.setOnClickListener {
// Get the current date
val calendar = Calendar.getInstance()
val year = calendar.get(Calendar.YEAR)
val month = calendar.get(Calendar.MONTH)
val day = calendar.get(Calendar.DAY_OF_MONTH)
// Create and show the DatePickerDialog
val datePickerDialog = DatePickerDialog(
this,
{ _, selectedYear, selectedMonth, selectedDay ->
// Update TextView with selected date
val formattedDate = "$selectedDay/${selectedMonth + 1}/$selectedYear"
textViewDate.text = formattedDate
},
year, month, day
)
datePickerDialog.show()
}
}
}
XML Layout
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<Button
android:id="@+id/btnShowDatePicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Select Date" />
<TextView
android:id="@+id/textViewDate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Selected Date"
android:textSize="18sp"
android:paddingTop="16dp" />
</LinearLayout>
2. Inline DatePicker Widget Example
If you want an inline DatePicker in your layout, you can use the DatePicker widget.
XML Layout
<DatePicker
android:id="@+id/datePicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:datePickerMode="spinner" />
Kotlin Code
import android.os.Bundle
import android.widget.DatePicker
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val datePicker: DatePicker = findViewById(R.id.datePicker)
val textViewDate: TextView = findViewById(R.id.textViewDate)
// Set a listener for date changes
datePicker.setOnDateChangedListener { _, year, monthOfYear, dayOfMonth ->
val formattedDate = "$dayOfMonth/${monthOfYear + 1}/$year"
textViewDate.text = formattedDate
}
}
}
Key Properties and Methods
In XML:
android:datePickerMode: Controls the style (spinner or calendar).
android:minDate: Sets the minimum selectable date.
android:maxDate: Sets the maximum selectable date.
In Kotlin:
datePicker.updateDate(year, month, day): Updates the displayed date.
datePicker.minDate: Set minimum date in milliseconds.
datePicker.maxDate: Set maximum date in milliseconds.
Customization Example
Restrict the selectable dates to a specific range:
val calendar = Calendar.getInstance()
// Minimum date: January 1, 2020
calendar.set(2020, Calendar.JANUARY, 1)
datePicker.minDate = calendar.timeInMillis
// Maximum date: December 31, 2025
calendar.set(2025, Calendar.DECEMBER, 31)
datePicker.maxDate = calendar.timeInMillis
Would you like more examples or specific customizations for the DatePicker?
Comments
Post a Comment