Je viens de compléter ce que @Kurtis Nusbaum avec un exemple pratique.
MISE À JOUR: comme @ rudy-s l'a dit, avec la dernière bibliothèque de support Android (api 18), j'ai vu qu'ils avaient déjà un support intégré pour la barre d'action (appelée classe ActionBarCompat).
J'ai créé deux applications simples pour montrer la différence visuelle entre ActionBarSherlock et ActionBar Compatibility. Voir les images comparatives:
Maintenant, l'apparence lorsque le bouton de menu est enfoncé:
Comme vous pouvez le voir, les images ne font que renforcer ce qui a été dit. La compatibilité de la barre d'action vous donne la barre d'action uniquement si l'appareil sur lequel vous exécutez est de niveau API 3.0 ou supérieur. Alors que Sherlock est plus général.
Ci-dessous, vous pouvez voir la source de l'application.
Le fichier xml du menu est le même:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_1"
android:orderInCategory="100"
android:showAsAction="always"
android:title="@string/action1"/>
<item
android:id="@+id/action_2"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="@string/action2"/>
<item
android:id="@+id/action_3"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="@string/action3"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
</menu>
Activité de compatibilité:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Activité de Sherlock:
public class MainActivity extends SherlockActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
}
Une configuration supplémentaire était nécessaire sur l'application sherlock:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
MISE À JOUR: comme @ rudy-s l'a dit, avec la dernière bibliothèque de support Android (api 18), j'ai vu qu'ils avaient déjà un support intégré pour la barre d'action (appelée classe ActionBarCompat).