Está en la página 1de 2

Interfaces dinmicas

Es posible crear interfaces ms enriquecidas mediante la creacin de interfaces dinmicas. Una interfaz
dinmica es una interfaz creada en Java, directamente en el archivo fuente de una actividad.

Se puede combinar una interfaz dinmica con una interfaz esttica (archivo XML).

La creacin dinmica de interfaces es muy til en el caso en que desee aadir componentes al vuelo en
una interfaz.

Para ilustrar esta funcionalidad, el siguiente ejemplo crea una interfaz compuesta de un botn que
servir para aadir campos de texto (EditText) dinmicamente en la misma.

Esta vista contiene, simplemente, un LinearLayout y un botn 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 botn, los campos de texto editables se aadirn dinmicamente 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 dinmicamente elementos EditText:

Hay que crear el campo de edicin mediante su constructor pasndole el contexto necesario
para su inicializacin.

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 aadir el campo de texto editable que se acaba de crear en
elLinearLayout obtenido anteriormente (mediante su identificador).

A continuacin se muestra el resultado obtenido:

También podría gustarte