Kończąc tylko to, co @Kurtis Nusbaum, na praktycznym przykładzie.
AKTUALIZACJA: jak powiedział @ rudy-s, z najnowszą biblioteką obsługi Androida (api 18), widziałem, że mają już wbudowaną obsługę paska akcji (zwaną klasą ActionBarCompat).
Zbudowałem dwie proste aplikacje, aby pokazać wizualną różnicę między ActionBarSherlock i ActionBar Compatibility. Zobacz zdjęcia porównawcze:
Teraz wygląd po naciśnięciu przycisku menu:
Jak widać, obrazy po prostu narzucają to, co zostało powiedziane. Zgodność paska akcji zapewnia pasek akcji tylko wtedy, gdy urządzenie, na którym uruchamiasz, ma poziom interfejsu API 3.0 lub nowszy. Podczas gdy Sherlock jest bardziej ogólny.
Poniżej możesz zobaczyć źródło aplikacji.
Plik XML menu jest taki sam:
<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>
Działalność w zakresie zgodności:
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;
}
}
Działalność Sherlocka:
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);
}
}
Wymagana była dodatkowa konfiguracja w aplikacji Sherlock:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
AKTUALIZACJA: jak powiedział @ rudy-s, z najnowszą biblioteką obsługi Androida (api 18), widziałem, że mają już wbudowaną obsługę paska akcji (zwaną klasą ActionBarCompat).