GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como criar um DatePickers no Android Studio?

Tags: #<Tag:0x00007fb86946f4c8>

Estou iniciando agora em android e tenho uma atividade da faculdade para fazer, porém o datePickers que está configurado aparece uma tela enorme com um calendário que ocuparia meia tela, fica bem impossível trabalhar com outro conteúdo.
Como poderia configurar para apenas clicar em um ícone ou algo do tipo e apenas abrir o calendário após o clique e sumir assim que estiver escolhida a data?
(Seria para uma tela de cadastro de pessoas)

Eu fiz essa classe para um aplicativo meu:

package me.roinujnosde.estacomsede.dialog;

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.widget.DatePicker;

import java.util.Calendar;

/**
 * Author RoinujNosde
 * Tacomsede - 2018
 */
public class SelecionadorDataDialog extends DialogFragment {

    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        DatePickerDialog.OnDateSetListener listener;
        try {
            listener = (DatePickerDialog.OnDateSetListener) requireActivity();
        } catch (ClassCastException ex) {
            throw new IllegalStateException("A Activity deve implementar OnDateSetListener", ex);
        }

        Calendar agora = Calendar.getInstance();
        Calendar minima = Calendar.getInstance();
        Calendar maxima = Calendar.getInstance();
        minima.set(Calendar.YEAR, agora.get(Calendar.YEAR) - 120);
        maxima.set(Calendar.YEAR, agora.get(Calendar.YEAR) - 1);

        //Definindo data inicial do widget
        DatePickerDialog dialog = new DatePickerDialog(requireContext(), listener,
                agora.get(Calendar.YEAR), agora.get(Calendar.MONTH),
                agora.get(Calendar.DAY_OF_MONTH));
        //Definindo data minima do widget
        dialog.getDatePicker().setMinDate(minima.getTimeInMillis());
        //Definindo data maxima
        dialog.getDatePicker().setMaxDate(maxima.getTimeInMillis());

        return dialog;
    }
}

Você mostra o diálogo assim:

DialogFragment selecionadorDeData = new SelecionadorDataDialog();
selecionadorDeData.show(getSupportFragmentManager(), "data");

E a Activity que vai mostrar esse diálogo deve implementar a interface DatePickerDialog.OnDateSetListener.

//