Solucionado (ver solução)
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