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.

Seleccione una fecha en el DatePicker de Android sin resaltar la fecha actual (hoy).

Tengo un DatePicker en mi aplicación de Android y he deshabilitado algunas fechas (como se muestra en la imagen de abajo).

Aquí he deshabilitado todas las fechas después del 7 de diciembre y hoy es 9 de diciembre.

Como puedes ver, el 9 de diciembre (es decir, hoy) está resaltado con el color de acento de la aplicación (azul oscuro), a pesar de que esa fecha está deshabilitada.

¿Cómo puedo desactivar ese resaltado, para que la fecha actual se vea similar a otras fechas desactivadas (algo así como en gris)?

Utilicé android.app.DatePickerDialog y establecí la fecha máxima usando su función setMaxDate().

En styles.xml no he agregado ningún estilo para el DatePicker hasta ahora, ya que estoy bien con el estilo predeterminado de la aplicación.

Gracias por leer y por favor avísame si se necesitan más detalles. Espero contar con tu apoyo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para desactivar el resaltado en la fecha actual en el DatePicker, puedes agregar un estilo personalizado para el DatePicker en tu archivo styles.xml. Sigue estos pasos:

    1. Crea un nuevo estilo para el DatePicker:
    <style name="DisabledDatePicker" parent="@android:style/Widget.Material.Light.DatePicker">
        <item name="android:datePickerStyle">@style/CustomDatePicker</item>
    </style>
    

    Aquí se crea un nuevo estilo llamado DisabledDatePicker que hereda del estilo predeterminado Widget.Material.Light.DatePicker. El atributo datePickerStyle se establece en CustomDatePicker, que se definirá a continuación.

    1. Crea un estilo personalizado para el DatePicker:
    <style name="CustomDatePicker" parent="@android:style/Widget.Material.Light.DatePicker">
        <item name="colorControlActivated">@color/disabled_color</item>
        <item name="colorControlNormal">@color/disabled_color</item>
    </style>
    

    En este estilo, los atributos colorControlActivated y colorControlNormal se establecen en el mismo color disabled_color. Esto desactivará el color de acento que se aplica a la fecha actual.

    1. Establece el nuevo estilo para el DatePicker en tu código:
    DatePickerDialog datePickerDialog = new DatePickerDialog(this, R.style.DisabledDatePicker, null, year, month, dayOfMonth);
    datePickerDialog.getDatePicker().setMaxDate(maxDate);
    datePickerDialog.show();
    

    El DatePickerDialog actualizado ahora utiliza el estilo DisabledDatePicker que desactiva el color de acento en la fecha actual.

    Nota: Recuerda definir el disabled_color en tu archivo colors.xml.

Comments are closed.