¿Cómo deshabilitar fechas anteriores o futuras en Datepicker en Android?

En este artículo, vamos a deshabilitar fechas anteriores o futuras en Datepicker. La mayoría de las veces, cuando usamos DatePicker en Android, vemos que toda la fecha está habilitada. Podemos seleccionar cualquiera de las fechas. Pero aquí vamos a ver cómo deshabilitar fechas pasadas o futuras. Deshabilitar la fecha pasada puede ser útil cuando estamos asignando tareas a alguien. Entonces la fecha seleccionada debe ser en el futuro. Deshabilitar la Fecha anterior puede ser útil cuando estamos preguntando por la fecha de nacimiento de alguien. Entonces la fecha seleccionada debe estar en el pasado. Implementemos esta función. 

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo  activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">
 
    <EditText
        android:id="@+id/editext"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
     
</LinearLayout>

Paso 3: trabajar con el archivo MainActivity.java

Vaya al archivo MainActivity.java y consulte el siguiente código. 

Para la fecha máxima:

Obtenga DatePicker de DatePickerDialog con getDatePicker() . Establezca la fecha máxima en la fecha actual con setMaxDate()

Nota: Requiere API nivel 11.

datePicker.getDatePicker().setMaxDate(calendar.getTimeInMillis());

A continuación se muestra el código del archivo MainActivity.java .  

Java

import android.app.DatePickerDialog;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
 
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
 
import java.util.Calendar;
 
public class MainActivity extends AppCompatActivity {
 
    EditText editText;
    DatePickerDialog datePicker;
 
    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        // initialising the calendar
        final Calendar calendar = Calendar.getInstance();
         
        // initialising the layout
        editText = findViewById(R.id.editext);
        final int day = calendar.get(Calendar.DAY_OF_MONTH);
        final int year = calendar.get(Calendar.YEAR);
        final int month = calendar.get(Calendar.MONTH);
         
        // initialising the datepickerdialog
        datePicker = new DatePickerDialog(MainActivity.this);
         
        // click on edittext to set the value
        editText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                datePicker = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(android.widget.DatePicker view, int year, int month, int dayOfMonth) {
                        // adding the selected date in the edittext
                        editText.setText(dayOfMonth + "/" + (month + 1) + "/" + year);
                    }
                }, year, month, day);
                 
                // set maximum date to be selected as today
                datePicker.getDatePicker().setMaxDate(calendar.getTimeInMillis());
                 
                // show the dialog
                datePicker.show();
            }
        });
    }
}

Para la fecha mínima:

Del mismo modo, obtenga DatePicker de DatePickerDialog con getDatePicker() . Establezca la fecha mínima en la fecha actual con setMinDate() :    

datePicker.getDatePicker().setMinDate(calendar.getTimeInMillis());

A continuación se muestra el código del archivo MainActivity.java .  

Java

import android.app.DatePickerDialog;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
 
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
 
import java.util.Calendar;
 
public class MainActivity extends AppCompatActivity {
 
    EditText editText;
    DatePickerDialog datePicker;
 
    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        // initialising the calendar
        final Calendar calendar = Calendar.getInstance();
 
        // initialising the layout
        editText = findViewById(R.id.editext);
        final int day = calendar.get(Calendar.DAY_OF_MONTH);
        final int year = calendar.get(Calendar.YEAR);
        final int month = calendar.get(Calendar.MONTH);
 
        // initialising the datepickerdialog
        datePicker = new DatePickerDialog(MainActivity.this);
 
        // click on edittext to set the value
        editText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                datePicker = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(android.widget.DatePicker view, int year, int month, int dayOfMonth) {
                        // adding the selected date in the edittext
                        editText.setText(dayOfMonth + "/" + (month + 1) + "/" + year);
                    }
                }, year, month, day);
 
                // set maximum date to be selected as today
                datePicker.getDatePicker().setMinDate(calendar.getTimeInMillis());
 
                // show the dialog
                datePicker.show();
            }
        });
    }
}

Producción: 

Publicación traducida automáticamente

Artículo escrito por annianni y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *