Button, al igual que EditText, es una subclase de TextView, y su definición en nuestro Layout se hace incluyendo el siguiente código en el fichero xml :
<Button
android:id="@+id/boton01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/boton01"
android:onClick="apretaBoton"
/>
Como en el resto de elementos ya conocidos podemos incluir multitud de atributos que modifcan su apariencia o su situación dentro del Layout que lo contiene, pero voy a hacer especial incapié en el atributo ‘android:onClick’ puesto que es especialmente interesante. El valor de este atributo indica el nombre de la clase Java que se ejecutará cuando el botón sea presionado.
Para verlo funcionar incluimos este código en nuestro fuente Java:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void apretaBoton (View view) {
TextView texto01 = (TextView) findViewById(R.id.texto01);
texto01.setText("Me han apretado!!");
}
Otra forma de conseguir el mismo resultado es definiendo un objeto ‘onClickListener’ asociado al botón. Este objeto lleva implícita la clase ‘onClick’ en la que definimos lo que debe ejecutarse cuando se aprete el botón :
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Capturo el botón a través de su atributo id
Button boton01 = (Button) findViewById(R.id.boton01);
// Asocio el objeto onClickLIstener al boton
boton01.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
apretaBoton(); // Indico la clase a ejecutar
}
});
}
// En este caso no recibe ningún parámetro de entrada
public void apretaBoton () {
TextView texto01 = (TextView) findViewById(R.id.texto01);
texto01.setText("Me han apretado!!");
}
Si utilizamos este método, vemos cómo la clase apretaBoton no necesita ningún parámetro de entrada.
Por cuestiones de claridad, yo prefiero utilizar esta última forma de tratar los botones, aunque podeis utilizar cualquiera.
PERSONALIZANDO NUESTRO BOTONES
Si la apariencia estandard de los botones Android no es de nuestro agrado, podemos modificarla, incluso hacer que varíe su forma según el estado del botón. Para hacer esto debemos definir un fichero XML en la carpeta res/drawable en el que asociamos la imagen a mostrar según el estado del botón:
Fichero res/drawable/botones.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_green"
android:state_pressed="true" />
<item android:drawable="@drawable/button_red"
android:state_focused="true" />
<item android:drawable="@drawable/button_blue" />
</selector>
El estado de seleccionado, es decir, cuando recibe el foco, (‘state_focused’) con la imagen ‘button_red’
Y el estado normal con la imagen ‘button_blue’
Por último incluimos un nuevo atributo a la definición XML del botón indicando :
android:background="@drawable/botones"
Con este atributo, normalmente indicamos el archivo drawable que queremos mostrar como botón, sin embargo, al indicar el nombre de un archivo XML podemos personaliazrlo aún más haciendo que cambie según su estado.
Estado’Focused’ al bajar con las flechas del teclado del simulador
Estado ‘Pressed’ al pulsar sobre él
La estructura del proyecto ha quedado de la siguiente forma:
La información para esta entrada ha sido obtenida del API de Android en la que podeis profundizar algo más.
Hasta la próxima.
No hay comentarios:
Publicar un comentario