Olá, pessoal.
No meu formulário, utilizo o TextInputLayout como um spinner (para manter o padrão dos campos), conforme código abaixo (coloquei o id como spinner para facilitar a identificação)
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/situacao_TextInputLayout"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:textColorHint="#1B508C"
android:textSize="18sp"
app:boxBackgroundColor="#FFFFFF"
app:boxStrokeColor="#1B508C"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/dados_gerais"
app:layout_constraintTop_toBottomOf="@+id/comoNosConheceu_TextInputLayout" >
<AutoCompleteTextView
android:id="@+id/spinner_Situacao"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:editable="false"
android:hint="Situação" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/data_limite_situacao"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:textColorHint="#1B508C"
android:textSize="18sp"
android:visibility="gone"
app:boxBackgroundColor="#FFFFFF"
app:boxStrokeColor="#1B508C"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/situacao_TextInputLayout">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Data limite"
android:inputType="date" />
</com.google.android.material.textfield.TextInputLayout>
Porém, preciso de uma validação no primeiro TextInputLayout: dependendo das opções que o usuário selecionar, irei setar o segundo para torná-lo visível (está como android:visibility="gone").
Fiquei na dúvida de qual método usar e tentei de duas formas (com setOnClickListener e outra com setOnItemSelectedListener), conforme abaixo, mas não consegui.
Poderiam me auxiliar, por favor?
situacao_TextInputLayout = findViewById(R.id.situacao_TextInputLayout);
situacao_TextInputLayout.setOnClickListener(v -> {
String situaSelecionada2 = spinnerSituacao.getEditableText().toString();
if(situaSelecionada2.equals("Matriculado")) {
campo_data_situacao_limite = findViewById(R.id.data_limite_situacao);
campo_data_situacao_limite.setVisibility(v.VISIBLE);
}
});
spinnerSituacao.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String situacao_selecionada = spinnerSituacao.getEditableText().toString();
if(situacao_selecionada.equals("Matriculado")) {
campo_data_situacao_limite = findViewById(R.id.data_limite_situacao);
campo_data_situacao_limite.setVisibility(view.VISIBLE);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});