2012-02-16

Icône Overflow et Navigation Bar



L'agaçante icône "overflow" apparait systématiquement dans la NavigationBar lorsque vous utilisez un menu et que vous utilisez un thème dérivé de NoTitleBar ou utilisez  <item name="android:windowNoTitle">true</item>.

Ok notre application à un look Holo. Mais comment l'améliorer un peu ?

Guidelines Android

Les guidelines Android sont encore un peu floues à ce sujet mais la tendance est au déplacement des informations contextuelles du bas de l'écran vers le haut. Dans les précédents SDK, la TitleBar était (trop) basique et nécessitait pas mal de contorsions à base de views pour la rendre plus sympathique.

Mon choix

J'adhère au principe du pilotage des éléments contextuels par le haut. Je tiens mes androbidules de la main dans le creux de la main droite et mon pouce atteint plus facilement le haut que le bas. Je vais donc déplacer les options en haut.

Objectif :

SignalSpam est un outil simple, les options contextuelles du menu sont les informations renvoyant vers le market et les paramètres.

Donc l'objectif est de supprimer l’icône overflow et de charger l'ActionBar avec des pictogrammes.
Le menu initial res/menu/menu.xml sera utilisé pour tous les niveaux d'API :
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/help" android:icon="@android:R/drawable/ic_menu_info_details" android:title="A propos"/> <item android:id="@+id/prefs" android:icon="@android:R/drawable/ic_menu_preferences" android:title="Preferences"/> </menu>
Pour pouvoir utiliser une menu déporté DANS l'ActionBar il est nécessaire de proposer une version de menu pour l'API 11+ (donc /res/menu-v11/menu.xml) et rajouter android:showAsAction="ifRoom|withText".
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/help" android:showAsAction="ifRoom|withText" android:icon="@android:R/drawable/ic_menu_info_details" android:title="A propos"/> <item android:id="@+id/prefs" android:showAsAction="ifRoom|withText" android:icon="@android:R/drawable/ic_menu_preferences" android:title="Preferences"/> </menu>

Aucun commentaire: