Simplemente completando lo que @Kurtis Nusbaum con un ejemplo práctico.
ACTUALIZACIÓN: como dijo @ rudy-s, con la nueva biblioteca de soporte de Android (api 18), vi que ya tienen soporte integrado para actionbar (llamada clase ActionBarCompat).
Creé dos aplicaciones simples para mostrar la diferencia visual entre ActionBarSherlock y ActionBar Compatibility. Ver las imágenes comparativas:
Ahora la apariencia cuando se presiona el botón de menú:
Como puede ver, las imágenes simplemente imponen lo que se dijo. La Compatibilidad de la barra de acción le proporciona la barra de acción solo si el dispositivo en el que está ejecutando es API nivel 3.0 o superior. Mientras Sherlock es más general.
A continuación puede ver la fuente de la aplicación.
El archivo xml del menú es el mismo:
<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>
Actividad de compatibilidad:
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;
}
}
La actividad 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);
}
}
Se necesitaba una configuración adicional en la aplicación Sherlock:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
ACTUALIZACIÓN: como dijo @ rudy-s, con la nueva biblioteca de soporte de Android (api 18), vi que ya tienen soporte integrado para actionbar (llamada clase ActionBarCompat).