sábado, 12 de abril de 2014

Android: poner botones en la "Action Bar"


Hola de nuevo! En este tutorial veremos cómo podemos colocar botones en la "Action Bar":




Y por supuesto, veremos como manejar los eventos al pulsar sobre ellos.



1. Activar la "Action Bar"

Para ello tendremos que colocar el siguiente método en el ".java" donde queramos que aparezca:


 @Override
public boolean onCreateOptionsMenu(Menu menu) 
{
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

Como podemos ver, nuestra action bar adopta "la forma" indicada en un xml que en este caso se llama "main.xml". 

Dentro de este xml será donde indicaremos el nº de botones que pondremos así como varios elementos que no veremos en este tutorial. Solo nos centraremos en poner botones y hacer que sean funcionales.

Antes de nada debemos saber la localización de estos ficheros xml. Pues bien se encuentran en: res --> menu. Así de fácil.

Pues bien, echemos un vistazo a un xml con unos cuantos "item's" que he añadido:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_settings"
        android:showAsAction="ifRoom"
        android:icon="@android:drawable/ic_menu_edit"
        android:title="@string/action_settings"
        />
    
    <item
        android:id="@+id/action_add"
        android:icon="@android:drawable/ic_input_add
        android:showAsAction="ifRoom"
        />
    
    <item
        android:id="@+id/action_info"
        android:icon="@android:drawable/ic_dialog_info
        android:showAsAction="ifRoom"
        />

</menu>

Cada etiqueta "item" es un botón que se posicionará en nuestra "Action Bar". Podemos ponerles un título (android:title), un icono (android:icon) y podemos decidir si las hacemos visibles o no (android:showAsAction --> never o ifRoom).

Dependiendo de si en nuestra "Action Bar" tenemos espacio suficiente o no, se nos mostrarán todos los botones o solo algunos.

Nota: una de las "buenas prácticas" que propone Google es la de "abandonar" la idea de los botones en la "Action Bar". En lugar de tener varios botones, tendríamos uno solo que desplegaría un menú con las demás opciones. Ya veremos en otro tutorial como puede hacerse eso.

Bien, continuando con el xml, ya podemos ejecutar el proyecto sobre el que estemos trabajando y comprobar los resultados:


Pero claro, al pulsarlos nada funciona...

2. Manejo de Eventos en los botones 


Para manejar los eventos que queramos cuando se pulse cada uno tenemos que añadir el siguiente método:

 @Override
public boolean onOptionsItemSelected(MenuItem item) 
{
   switch ( item.getItemId() ) 
   {
      case R.id.action_add:
      {
       Toast.makeText(this, "Botón añadir pulsado", Toast.LENGTH_SHORT).show();
      }
      break;
       
      case R.id.action_info:
      {
       Toast.makeText(this, "Botón info pulsado", Toast.LENGTH_SHORT).show();
      }
      break;
   
      case R.id.action_settings:
      {
       Toast.makeText(this, "Botón settings pulsado", Toast.LENGTH_SHORT).show();
      }
      break;
      
       default:
           return super.onOptionsItemSelected(item);
   }
   return true;
}


De esta forma cuando pulsemos cada botón, mostraremos un mensaje de texto con el elemento "Toast".


Para quien quiera saber más cosas sobre la "Action Bar" les dejo esta guía-tutorial de la página de Android Developers.


Aquí os dejo el código del proyecto, para que probéis y miréis mejor cómo se hace.

No hay comentarios:

Publicar un comentario