Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
12
respostas

Data no TextInputLayout

Olá, pessoal

No meu TextInputLayout , só aparece o dialog para selecionar a data quando eu clico duas vezes, ou seja, quando o EditText está selecionado. Como faço para assim que for selecionado aparecer o dialog para selecionar a data?

Tentei mudar o método para invés de pegar o EditText, pegar o TextInputLayout, mas com o TextInputLayout o dialog só aparece quando click no título dele kkkkk.

private void pegaData(TextInputLayout campo_data) {
        EditText campo = campo_data.getEditText();
        Calendar calendar = Calendar.getInstance();
        final int year = calendar.get(Calendar.YEAR);
        final int month = calendar.get(Calendar.MONTH);
        final int day = calendar.get(Calendar.DAY_OF_MONTH);

        campo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DatePickerDialog datePickerDialog = new DatePickerDialog(Cadastro_Visita.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                        month=month+1;
                        String data = day+"/"+month+"/"+year;
                        campo_data.getEditText().setText(data);

                    }
                }, year,month,day);
                datePickerDialog.show();
            }
        });
    } 
12 respostas

Fala Thiago, tudo bem ?

Recomendo você usar o datepicker do material design: https://material.io/components/date-pickers/android#customization

Além disso, você consegue ver se a view está com focus através do método setOnFocusChangeListener ( https://developer.android.com/reference/android/view/View.OnFocusChangeListener)

Cara, consegui não aushuahsuahsuha

private void pegaData(TextInputLayout campo_data) {
        EditText campo = (EditText) campo_data.getEditText();
        Calendar calendar = Calendar.getInstance();
        final int year = calendar.get(Calendar.YEAR);
        final int month = calendar.get(Calendar.MONTH);
        final int day = calendar.get(Calendar.DAY_OF_MONTH);

        campo.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                DatePickerDialog datePickerDialog = new DatePickerDialog(Cadastro_Visita.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                        month = month + 1;
                        String data = day + "/" + month + "/" + year;
                        campo_data.getEditText().setText(data);
                    }
                }, year, month, day);
                datePickerDialog.show();
            }
        });

Deu nada com esse comando... Me dá mais uma luz, por favor.

Me mostra certinho como tá o codigo dessa parte ?

Só pra ter certeza, tu disse que estava indo só na segunda fez que clica, então tem algo estranho.

Não entendi qual parte seria... mandar o link, acho que será mais fácil: https://github.com/thiagornela/visita

Classe Cadastro_Visita

faz o teste de colocar no próprio TextInputLayout, o listener de focus

Já tentei também. Diretamente no TextInputLayout não acontece nada rsrsrs

inclusive com o listener de click?

Com o click, o calendário aparece quando clico bem na borda do TextInputLayout. Não entendi

isso deve ser por conta do componente interno ser o EditText e a parte externar ser o TextInputLayout

Pois é... imaginei... mas foda é mesmo utilizando o focus no EditText não ter dado

solução!

jovem, você não me disse que o teclado estava abrindo antes rs

novamente, estamos com problema de focus.

O focus default é abrir o teclado, por isso que só tem aberto na segunda vez que clica rs.

voce vai precisar colocar a propriedade android:focusable="false" no edit text desse cara e o click precisa estar no edittext também, testa ai :)

Não disse não? ahsuhaushua

Rapaz, funcionou. Vou ter que escrever um TNC haushausha

Muitíssimo obrigado. Deu certo. Menos um kkkk