Tel. 06151 / 39 10 793

ActionBarSherlock (ABS)

14.01.2013  • Benedikt Kappes
Logo ActionBarSherlock

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.

Library einbinden.PNG

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.

actionBarSherlockScreenshot.png

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

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt.

Suchen


Unsere Partner
comm-press comm-press
Drupal Spezialisten aus Hamburg
neosmart - Digital Media, Webdesign & Webentwicklung<br />
aus Darmstadt neosmart
Digital Media, Webdesign & Webentwicklung aus Darmstadt
trinomica - Software Solutions trinomica
Software Solutions
Sponsoring und Mitgliedsschaften

Drupal Initiative Deutschland - Firmen-Mitglied

So finden Sie uns