giovedì 24 luglio 2014

Actionbar su Android

Agli albori di Android era presente un tasto fisico di menu assieme agli attuali tre pulsante in fondo allo schermo. Dalla versione 3 questo e' stato superato dalla ActionBar, una sorta di menu che si trova nella parte alta dello schermo in prossimita' del nome dell'applicazione (indicata dai tre quadratini sovrapposti)






per popolare questo componente si edita il file xml che ha lo stesso nome della Activity e che si trova nelle risorse del progetto (normalmente e' /res/menu/main.xml)

per generare l'esempio mostrato nella figura soprastante
--------------------------------------------------------------------------------
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.luca.innocenti.ibea2.MainActivity" >
    <item android:id="@+id/it" android:title="@string/it" android:checked="true" android:checkable="true"></item>
    <item android:id="@+id/uk" android:title="@string/uk" android:checked="false" android:checkable="true"></item>
</menu>
--------------------------------------------------------------------------------

Per rendere interattivo il menu si agisce sulla funzione onOptionItemSelected
In questo caso si eliminano prima tutti i segni di spunta, poi viene settata la variabile della lingua, aggiunge il segno di spunta al menu premuto e si mostra un toast
--------------------------------------------------------------------------------
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
menu.getItem(0).setChecked(false);
menu.getItem(1).setChecked(false);

switch(id){
case R.id.it:
lingua  = 1;
Toast.makeText(getApplicationContext(), "Adesso impostato in italiano", Toast.LENGTH_SHORT).show();
 if(item.isCheckable()) {
           item.setChecked(!item.isChecked());
       }
break;
case R.id.uk:
lingua = 2;
Toast.makeText(getApplicationContext(), "Now Set in english", Toast.LENGTH_SHORT).show();
 if(item.isCheckable()) {
           item.setChecked(!item.isChecked());
       }
   
break;
}
return super.onOptionsItemSelected(item);
}
--------------------------------------------------------------------------------

Di seguito un breve filmato per vedere come funziona il menu appena impostato