ActionBar

29 settembre 2016

Iniziando a sperimentare esempi di codice, uno degli aspetti maggiormente evidenti dal punto di vista grafico, è la spessa fascia scura che si trova nella parte superiore dell’applicazione. Il suo nome è ActionBar e la sua introduzione ha rappresentato un elemento fortemente innovativo a partire dalla versione 3 (HoneyComb) di Android.

Non si tratta solo di un “bordo”. In realtà, l’ActionBar può essere definita una cornice programmabile destinata ad ospitare opzioni di navigazione e di interazione di utilità più o meno comune all’intera applicazione, tra cui:

  • actions ossia pulsanti cliccabili per attivare azioni. Altro non sono in realtà che voci dell’Options Menu collocate sull’ActionBar;
  • navigazione con “tab”;
  • navigazione con menu a tendina;
  • campi di ricerca;
  • molto altro ancora.

In questo capitolo, si prenderà confidenza con l’ActionBar iniziando a sperimentarne funzionalità utili e già integrabili con quanto si è appreso sinora. Come di consueto, la documentazione ufficiale offrirà quanto necessario ad ulteriori approfondimenti.

Avere l’ActionBar disponibile

Essendo entrata a regime in Android 3, l’ActionBar è un elemento un po’ di confine.

Se si sta programmando per API di livello 11 o superiori quindi per Android 4.x.x (nell’AndroidManifest.xml i valori degli attributi targetSdkVersion o minSdkVersion dovranno essere impostati almeno a 11) l’ActionBar sarà sempre disponibile purchè si abbia un tema “olografico”, quindi nel file manifest l’attributo android:theme dovrà essere impostato a Theme.Holo o un suo discendente.

Per avere l’ActionBar in applicazioni destinate anche a versioni di Android con API minori di 11 (quindi anche Android 2.x.x) si dovrà collegare il proprio progetto alla libreria di supporto appcompat v7 ed inoltre:

  • l’Activity dovrà estendere ActionBarActivity;
  • il tema dell’Activity dovrà essere Theme.AppCompat o un derivato.

Comandi nell’ActionBar

L’immagine (fonte: documentazione ufficiale Android) mostra una tipica ActionBar popolata con gli elementi più comuni:

  1.  icona dell’applicazione e titolo;
  2.  due actions;
  3.  action overflow che ospita altre actions che non hanno trovato posto sull’ActionBar.
Una tipica ActionBar Android

Una tipica ActionBar Android

Icona dell’applicazione e titolo sono configurabili già dal manifest. Aprendo il file AndroidManifest.xml vediamo che il nodo <application> ha un attributo android:icon e android:label:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
	     . . . 
	     . . .

Servono proprio a definire l’icona ed il titolo per l’applicazione. Questi attributi sono presenti anche nei nodi <activity> che permettono pertanto di adottare un’icona e un titolo per la singola Activity.

Le actions, come già accennato, non sono altro che i comandi che abbiamo imparato a gestire nel capitolo riguardante i menu. Infatti nella visione più moderna della programmazione Android, l’ActionBar tende ad assorbire parte del ruolo degli Options Menu dando la possibilità di ospitarne le voci.

Per farlo si dovrà solo mettere mano al layout del menu (reperibile nella cartella di risorse res/menu) impostando opportunamente il valore dell’attributo showAsAction, tra i seguenti:

ifRoom

mostra le icone sull’ActionBar compatibilmente con lo spazio disponibile

never

non mostra le voci del menu sull’ActionBar ma solo nell’Options Menu

always

il layout viene forzato a mostrare le voci in ActionBar. E’ un valore sempre sconsigliabile, meglio optare per ifRoom

withText

Oltre all’icona viene mostrato in ActionBar anche il testo, solitamente collegato all’attributo android:title

Se si ha necessità di combinare più valori per showAsAction lo si può fare sfruttando un OR (|), ad esempio ifRoom|withText.

Lo stralcio di XML che segue mostra un OptionsMenu che collocherà entrambe le sue voci sull’ActionBar.

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/MENU_1"
        android:showAsAction="ifRoom"
        android:title="Nuovo"
        android:icon="@android:drawable/ic_menu_add"/>
	 <item
        android:id="@+id/MENU_2"
        android:showAsAction="ifRoom"
        android:title="Elenco"
         android:icon="@android:drawable/ic_menu_agenda"/>
</menu>

Eventuali voci del menu che non troveranno posto nell’ActionBar verranno ospitate nell’action overflow.

Navigazione “all’indietro”

Altra funzionalità che può essere introdotta da subito nella configurazione dell’ActionBar è il supporto alla navigazione all’indietro. L’immagine mostra, cerchiata in rosso, una piccola freccia verso sinistra accanto all’icona dell’applicazione.

16_img02

L’ActionBar con il supporto della navigazione indietro

Questo elementino di interazione dovrebbe prendere il posto del pulsante hardware comunemente chiamato “Back” o “Indietro”.

Questa tecnica verrà per lo più usata nelle Activity secondarie per tornare a quella precedente. Per impostarla sarà necessario seguire due passi:

  • nell’AndroidManifest.xml, esattamente nel nodo <activity> dell’Activity che dovrà mostrare la frecciolina, si specificherà la parent Activity ossia l’Activity a cui si dovrà tornare:
    	<activity android:name=".SecondActivity"
    	android:label="Seconda Activity"
    	android:parentActivityName=".MainActivity"/>
  • nell’onCreate dell’Activity che mostra la frecciolina, si inserirà la seguente riga di codice:
    	getActionBar().setDisplayHomeAsUpEnabled(true);

Oltre la ActionBar

Il modello progettuale affermatosi con la ActionBar ha offerto un terreno fertile ad una tipologia di controllo più flessibile, la Toolbar, che è diventata protagonista delle interfacce utente per Android a partire dall’introduzione del Material Design.

Tutte le lezioni

1 ... 17 18 19 ... 85

Se vuoi aggiornamenti su ActionBar inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su ActionBar

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy