es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Android DatePickerDialog muestra solo las fechas restantes del mes actual como seleccionables.

Estoy intentando mostrar solo el mes actual con las fechas restantes seleccionables en el DatePicker.

Mi código:

val calendar = Calendar.getInstance()
//obteniendo el día, mes y año actual
val year = calendar.get(Calendar.YEAR)
val month = calendar.get(Calendar.MONTH)
val day = calendar.get(Calendar.DAYOFMONTH)

val datePickerDialog =
    DatePickerDialog(
        context, DatePickerDialog.OnDateSetListener
        { view, year, monthOfYear, dayOfMonth ->
            val currentDate: String = "$year-${(monthOfYear + 1)}-$dayOfMonth"

    }, year, month, day
)


// Max = actual
val maxTime = calendar.timeInMillis

// Mover el día al primer día del mes
calendar.set(Calendar.DAY_OF_MONTH, 1)
// Mover al mes anterior
calendar.add(Calendar.MONTH, -1)

// Min = tiempo después de los cambios
val minTime = calendar.timeInMillis
datePickerDialog.datePicker.maxDate = maxTime
datePickerDialog.datePicker.minDate = minTime
datePickerDialog.show()

Está mostrando el mes y la fecha actual seleccionables, pero las fechas futuras también están deshabilitadas. Solo quiero que las fechas anteriores estén deshabilitadas y que las fechas restantes del mes actual puedan ser seleccionables.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución:

    val calendario = Calendar.getInstance()
    //obtener día, mes y año actual.
    val año = calendario.get(Calendar.YEAR)
    val mes = calendario.get(Calendar.MONTH)
    val día = calendario.get(Calendar.DAY_OF_MONTH)
    
    val dialogoSelectorFecha =
        DatePickerDialog(
            context, DatePickerDialog.OnDateSetListener
            { view, año, mesDelAño, díaDelMes ->
                val fechaActual: String = "$año-${(mesDelAño + 1)}-$díaDelMes"
    
            }, año, mes, día
        )
    
    // Máximo = actual
    val tiempoMáximo = calendario.timeInMillis
    
    // Mover el día como primer día del mes
    calendario.set(Calendar.DAY_OF_MONTH, 1)
    
    // Mínimo = tiempo después de los cambios
    val tiempoMínimo = calendario.timeInMillis
    dialogoSelectorFecha.datePicker.maxDate = tiempoMáximo
    dialogoSelectorFecha.datePicker.minDate = tiempoMínimo
    dialogoSelectorFecha.show()
    

Comments are closed.