Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Incluir campos pela activity

Estou com dúvidas de como faço para incluir uma view na tela (ex. textview) ao clicar em um button.

4 respostas
solução!

O que você pode fazer é o seguinte, no seu layout xml, você já coloca todos os campos que você vai precisar, entretanto o que você não quer que apareca você declara que a visibilidade dele será 'invisible' ou 'gone',ficando desta forma :

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/botao"
        android:text="Clique aqui"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:id="@+id/texto"
        android:visibility="invisible"
        />

</LinearLayout>

E o seu botão quando for clicado, deixamos o TextView visível novamente, o código ficaria dessa forma :


 Button button = (Button) findViewById(R.id.botao);
        TextView textView = (TextView) findViewById(R.id.texto);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView.setVisibility(View.VISIBLE);
            }
        });

Espero ter ajudado !

Abraco :)

Obrigado Matheus, mas a ideia e não saber quantos campos serão exibidos, eles serão apresentados conforme selecionados, guardando alguma informação.

Beleza, o que você também pode fazer é o seguinte: adicionar os campos dinamicamente. Dá um pouco mais de trabalho, entretanto acredito que seja o que deseja :

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final Context that = this;
        final LinearLayout layout = new LinearLayout(this);

        Button button = new Button(this);

        button.setText("Clique aqui");
        layout.addView(button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                TextView tv = new TextView(that);
                tv.setText("Clicou no botão");
                layout.addView(tv);
            }
        });

        setContentView(layout);

    }

Abraco

Era isso mesmo obrigado.