Estou com dúvidas de como faço para incluir uma view na tela (ex. textview) ao clicar em um button.
Estou com dúvidas de como faço para incluir uma view na tela (ex. textview) ao clicar em um button.
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.