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:

  1. DatePickerDialog: A dialog that allows the user to pick a date.

  2. 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

  1. In XML:

    • android:datePickerMode: Controls the style (spinner or calendar).

    • android:minDate: Sets the minimum selectable date.

    • android:maxDate: Sets the maximum selectable date.

  2. 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

Popular posts from this blog

RadioButtons-AGN HUB

Checkbox- AGN HUB

Timepicker- AGN HUB