Voici la suite du tutoriel sur l’ActionBar. Dans cette partie, nous allons reprendre le projet crée lors du tutoriel précédant afin d’aborder les points suivants :

  • La navigation à l’aide de l’icone de votre application (présente sur l’ActionBar)
  • La séparation de l’ActionBar en deux

Séparer l’ActionBar en deux

Si vous possédez plusieurs actions importantes dans votre application, vous pouvez séparer votre barre d’action en deux :

  • La première ActionBar contiendra l’icone de votre application, le titre et la navigation de votre application (Dropdown menu)
  • La deuxième ActionBar contiendra les différentes actions disponibles via votre application

Cette fonctionnalité est disponible qu’à partir de l’API 14 d’Android donc à partir de la version 4.0 d’Android.

Pour séparer votre ActionBar en deux, il suffit de rajouter l’attribut android:uiOptions=”splitActionBarWhenNarrow” sur la balise application (si vous souhaitez séparer votre ActionBar sur toute l’application) ou sur la balise activity (si vous souhaitez séparer votre ActionBar uniquement sur quelques activités cibles) du fichier manifeste de l’application.

<activity
   android:name=".NextActivity"
   android:uiOptions="splitActionBarWhenNarrow" >
</activity>

Ce qui donnera sur un appareil Android (4.0 ou supérieur)

Navigation via l’icone de votre application

Afin de pouvoir activer la navigation via l’icone de votre application (icone disponible sur l’ActionBar), il suffit de rajouter le code suivant dans la méthode onCreateOptionsMenu (aprés le chargement du fichier XML représentant votre menu/ActionBar).

ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
  • La première ligne permet de récupérer l’instance de l’ActionBar
  • La deuxième ligne permet d’activer la navigation à l’aide de l’icone de votre application

La méthode setDisplayHomeAsUpEnabled est disponible qu’a partir d’Android 3.0 (Honeycomb). Afin de conserver la compatibilité avec les anciennes version d’Android, il faut vérifier la version actuelle de l’appareil avant d’éxecuter cette partie du code. Cette vérification s’effectue rapidement à l’aide de la classe Build.VERSION.SDK_INT.

Ce qui donnera :

@Override
public boolean onCreateOptionsMenu(Menu menu) {
	getMenuInflater().inflate(R.menu.activity_main, menu);
	if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
		ActionBar actionBar = getActionBar();
		actionBar.setDisplayHomeAsUpEnabled(true);
	}
	return true;
}

Si vous exécutez l’exemple, vous allez remarquer que l’icone devient cliquable (aucune action n’est liée à ce clic pour le moment)

Pour pouvoir exécuter l’action de votre choix lors du clic sur l’icone, il faut gérer l’élement android.R.id.home dans la méthode onOptionsItemSelected. Vous pouvez par exemple revenir à l’activité lancée précédemment (onBackPressed : permet de simuler le clic sur le bouton précedant) ou lancer l’activité de votre choix.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
	switch (item.getItemId()) {
		case android.R.id.home:
			onBackPressed();
		case R.id.menu_about:
			// Comportement du bouton "A Propos"
			return true;
		case R.id.menu_help:
			// Comportement du bouton "Aide"
			return true;
		case R.id.menu_refresh:
			// Comportement du bouton "Rafraichir"
			return true;
		case R.id.menu_search:
			// Comportement du bouton "Recherche"
			return true;
		case R.id.menu_settings:
			// Comportement du bouton "Paramétres"
			return true;
		default:
			return super.onOptionsItemSelected(item);
	}
}

Ce qui donnera :
Android 3.0

Android 4.0

Vous pouvez trouver le code de cet exemple ici.

Categories: Tutoriels

4 Responses so far.


  1. julien dit :

    très bon tuto Merci beaucoup ça m’a été très utile ! seule petite info qu’il m’a manqué concerne le changement de couleur de la barre d’action, j’ai résolu mon problème en appelant:

    actionBar.setBackgroundDrawable(new ColorDrawable(Color));

    puis

    invalidateOptionsMenu();

  2. ouadi maakoul dit :

    http://malamehes.com est un reseau social debutant …..aidez nous pour avancer on vous inscrivant sur nos lieux…..merci.

  3. baddel dit :

    [...] ActionBar sous Android (Partie 2) PUBLIÉ PAR BENBOURAHLA NAZIM PUBLIÉ LE JUIL – 20 – 2012 [...]

  4. sarab affan dit :

    Bonjour;
    Je vs remercie pr cet excellent tuto.
    Mais j’ai une question: Comment placer des menus dans ActionBar en haut et en bas?
    J’ai lu que ce n’est possible qu’avec les custom view. :(
    Alors qu’est ce qu’une custom view?
    Comment faire?

Leave a Reply


Notifiez-moi des commentaires à venir via email. Vous pouvez aussi vous abonner sans commenter.