Legacy Android DatePickerDialog dialogs look outdated on modern Material 3 apps. The Google Material Components library provides MaterialDatePicker, an accessible date picker dialog featuring built-in calendar constraints, range selection support, and dynamic theme colors.

Kotlin Implementation: Birthdate MaterialDatePicker

MainActivity.ktkotlin
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.datepicker.CalendarConstraints
import com.google.android.material.datepicker.DateValidatorPointBackward
import com.google.android.material.datepicker.MaterialDatePicker
import java.text.SimpleDateFormat
import java.util.*
 
class MainActivity : AppCompatActivity() {
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        constrainBirthdateAndShowPicker()
    }
 
    private fun constrainBirthdateAndShowPicker() {
        // Restrict valid selectable dates to today or past dates only
        constrainBirthdatePicker()
    }
 
    private fun constrainBirthdatePicker() {
        val constraints = CalendarConstraints.Builder()
            .setValidator(DateValidatorPointBackward.now())
            .build()
 
        val datePicker = MaterialDatePicker.Builder.datePicker()
            .setTitleText("Select Your Birthdate")
            .setSelection(MaterialDatePicker.todayInUtcMilliseconds())
            .setCalendarConstraints(constraints)
            .build()
 
        datePicker.addOnPositiveButtonClickListener { selectionMillis ->
            val formatter = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())
            formatter.timeZone = TimeZone.getTimeZone("UTC")
            val dateString = formatter.format(Date(selectionMillis))
            
            findViewById<TextView>(R.id.selectedDateText).text = "Birthdate: $dateString"
        }
 
        findViewById<Button>(R.id.btnSelectDate).setOnClickListener {
            datePicker.show(supportFragmentManager, "BIRTHDATE_PICKER")
        }
    }
}