Sto solo completando quello che @Kurtis Nusbaum con un esempio pratico.
AGGIORNAMENTO: come ha detto @ rudy-s, con la più recente libreria di supporto Android (API 18), ho visto che hanno già il supporto integrato per ActionBar (chiamato classe ActionBarCompat).
Ho creato due semplici applicazioni per mostrare la differenza visiva tra ActionBarSherlock e ActionBar Compatibility. Vedi le immagini comparative:
Ora l'aspetto quando viene premuto il pulsante menu:
Come puoi vedere, le immagini applicano solo ciò che è stato detto. La compatibilità della barra delle azioni fornisce la barra delle azioni solo se il dispositivo su cui è in esecuzione è di livello API 3.0 o superiore. Mentre Sherlock è più generale.
Di seguito puoi vedere l'origine dell'applicazione.
Il file xml del menu è lo stesso:
<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>
Attività di 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;
}
}
Attività di 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);
}
}
Era necessaria un'ulteriore configurazione sull'app Sherlock:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
AGGIORNAMENTO: come ha detto @ rudy-s, con la più recente libreria di supporto Android (API 18), ho visto che hanno già il supporto integrato per ActionBar (chiamato classe ActionBarCompat).