Está en la página 1de 2

Interfaces dinámicas

Es posible crear interfaces más enriquecidas mediante la creación de interfaces dinámicas. Una interfaz
dinámica es una interfaz creada en Java, directamente en el archivo fuente de una actividad.

Se puede combinar una interfaz dinámica con una interfaz estática (archivo XML).

La creación dinámica de interfaces es muy útil en el caso en que desee añadir componentes al vuelo en
una interfaz.

Para ilustrar esta funcionalidad, el siguiente ejemplo crea una interfaz compuesta de un botón que
servirá para añadir campos de texto (EditText) dinámicamente en la misma.

Esta vista contiene, simplemente, un LinearLayout y un botón que tiene un identificador.

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/linearlayout">

<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/addEditText"
android:id="@+id/addBtn"/>

</LinearLayout>

Con el clic del botón, los campos de texto editables se añadirán dinámicamente a la vista.

public class DynamicViewActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final LinearLayout linearLayout = (LinearLayout)
findViewById(R.id.linearlayout);
Button btn = (Button) findViewById(R.id.addBtn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EditText edit = new
EditText(DynamicViewActivity.this);
edit.setHint(R.string.newEditText);
LayoutParams layoutParams = new
LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
edit.setLayoutParams(layoutParams);
linearLayout.addView(edit);
}
});
}
}

Para crear dinámicamente elementos EditText:

Hay que crear el campo de edición mediante su constructor pasándole el contexto necesario
para su inicialización.

Este campo de texto tiene un texto por defecto (setHint).

Los layoutParams sirven para especificar valores y propiedades a un EditText (especialmente


su anchura y altura).

Para finalizar, hay que añadir el campo de texto editable que se acaba de crear en
elLinearLayout obtenido anteriormente (mediante su identificador).

A continuación se muestra el resultado obtenido:

También podría gustarte