Seit der Android Version 3.0 (Honeycomb) hat die ActionBar den Menü Button ersetzt. Wer die ActionBar auch in früheren Versionen einsetzen will, der kann auf die Erweiterung der Android Support Library – ActionBarSherlock - von Jake Wharton zurückgreifen. Diese Library lässt sich ab der Android Version 2.x einsetzen und steht unter der Apache Lizenz 2.0. Die aktuelle Version v4.2.0 lässt sich hier herunterladen.
Beispiel
Um den Einstieg etwas zu erleichtern hier ein kleines Beispiel. Nachdem die Library heruntergeladen wurde muss daraus unter Eclipse ein neues Projekt mit Hilfe von Android Project from Existing Code erstellt werden. Dabei lassen sich auch direkt einige Beispielprojekte importieren. Ist dies vollbracht können wir unser eigentliches Projekt erstellen. Dazu muss einfach ein neues Android Projekt angelegt werden. Haben wir unser Projekt erstellt lässt sich mit einem Rechtsklick auf das Projekt Properties – Android unter dem Fenster Library mit Add das ActionBarSherlock Projekt hinzufügen.
Falls danach der Fehler "Jar mismatch! Fix your dependencies" auftauchen sollte, muss unter dem Ordner libs in unserem Projekt die Support Library entfernt werden, da diese schon in der ABS-Library eingebunden ist.

Um in unserem Projekt den oben gezeigten Screen zu erhalten, benötigen wir den folgenden Code.
MainActivity.java
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
public class MainActivity extends SherlockActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_search:
//TODO
//implement search
return true;
case R.id.menu_settings:
//TODO
//start settings activity
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.Theme_Sherlock);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_search"
android:showAsAction="ifRoom"
android:icon="@drawable/ic_action_search"
android:title="@string/menu_search"/>
<item
android:id="@+id/menu_settings"
android:showAsAction="ifRoom"
android:title="@string/menu_settings"/>
</menu>
Um die ABS-Library zu verwenden muss anstatt von Activity von SherlockActivity abgeleitet werden. Für andere Activities und Fragmente gibt es entsprechende Pendants (ListActivity -> SherlockListActivity). Das erstellen des Menüs erfolgt wie gewohnt, es muss dabei wieder drauf geachtet werden, dass die entsprechenden Klassen aus der ABS-Library importiert werden (android.view.Menu -> com.actionbarsherlock.view.Menu). Dieses Verhalten zieht sich durch die gesamte Benutzung der ABS-Library. Ein weiteres Beispiel hierfür ist getSupportActionBar() anstatt getActionBar() zu verwenden.
In der onCreate Methode gilt es lediglich darauf zu achten, dass ein Theme gesetzt wird. Es gibt entsprechende Möglichkeiten die ActionBar optisch seinen Wünschen anzupassen, eine einfache Möglichkeit hierzu bietet der Android Action Bar Style Generator. Dort kann mit ein paar Klicks die persönliche Wunschoptik erstellt und heruntergeladen werden.
Fazit
Die ActionBarSherlock Library ist eine super Möglichkeit die ActionBar auch auf Geräten ab der Version 2.x einzusetzen. Dabei muss bei der Programmierung lediglich darauf geachtet werden, dass die entsprechenden Pendants verwendet werden.
Viel Spaß mit der ActionBarSherlock
Benedikt











Kommentar hinzufügen