Acabei de completar o que @Kurtis Nusbaum com um exemplo prático.
ATUALIZAÇÃO: como o @ rudy-s disse, com a mais recente biblioteca de suporte ao Android (api 18), vi que eles já têm suporte interno para a actionbar (chamada classe ActionBarCompat).
Criei dois aplicativos simples para mostrar a diferença visual entre o ActionBarSherlock e o ActionBar Compatibility. Veja as imagens comparativas:
Agora, a aparência quando o botão de menu é pressionado:
Como você pode ver, as imagens apenas reforçam o que foi dito. A Compatibilidade da barra de ação fornece a barra de ação apenas se o dispositivo em que você está executando for de nível de API 3.0 ou superior. Enquanto Sherlock é mais geral.
Abaixo você pode ver a fonte do aplicativo.
O arquivo xml do menu é o mesmo:
<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>
Atividade de compatibilidade:
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;
}
}
Atividade 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);
}
}
Uma configuração adicional foi necessária no aplicativo sherlock:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
ATUALIZAÇÃO: como o @ rudy-s disse, com a mais recente biblioteca de suporte ao Android (api 18), vi que eles já têm suporte interno para a actionbar (chamada classe ActionBarCompat).