Вступление
Недавно столкнулся с проблемой отсутствия элемента ActionBar в Android 2.1, поскольку пользовательский интерфейс был уже спроектирован, и приложение должно быть совместимо с API:7. Пришлось выкручиваться. Немного погуглив нашел интересную библиотеку ActionBarSherlock, которая позволяет создать ActionBar начиная с Android 2.1(API:7).
Правда русскоязычного материала по ней найти не удалось, поэтому чтобы разобраться в ней пришлось потратить немного времени. Исходя из своих результатов решил написать маленький мануал на примере создания элементарного заголовка и кнопки, может поможет кому то сэкономить время (пример приведен в среде Eclipse).
Установка библиотеки
Шаги:
1. Скачиваем библиотеку с сайта: actionbarsherlock.com/
2. Распаковываем архив
3. Запускаем среду и импортируем проект:
File->New->Other...->Android->Android Project from Existing Code, нажимаем Next. В поле Root Directory выбираем расположение нашей «библиотеки» и в ней папку Library. Для копирования библиотеки в рабочую папку среды ставим галочку напротив Copy projects into workspase (необязательно) и жмем Finish.
4. Теперь в окне «Package Exploler» нажимаем Правой Кнопкой Мыши на нашей библиотеке и во всплывающем меню выбираем пункт «Properties». В нем в разделе Android ставим галочку напротив строки «Is Library», нажимаем ОК.
5. Нужно также позволить использовать в текущей версии API возможности более старших версий. Для этого нажимаем на проекте правой кнопкой -> Android Tools -> Add Support Library
Пример
1.Создаем новый проект:
2.Подключаем к нему нашу библиотеку. Для этого в «Properties» нашего проекта на закладке Android нажимаем кнопку add, выбираем нужную нам библиотеку «library», подтверждаем выбор:
3.Подключаем поддержку API более старших версий (нажав на проекте правой кнопкой -> Android Tools -> Add Support Library)
4.В Android Manifest нужно прописать следующую строку:
android:theme="@style/Theme.Sherlock"
Приблизительный листинг файла Манифест:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.testactionbar"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.Sherlock"
>
<activity
android:name="com.example.testactionbar.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
5. Также наша активность должна наследоватся от SherlocActivity и нужно переопределить:
onCreateOptionsMenu(Menu menu)
для этого нужно добавить импорт:
import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem;
листинг
src/MainActivity
:
package com.example.testactionbar;
import android.os.Bundle;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
public class MainActivity extends SherlockActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Добавляем кнопку с текстом "info"
menu.add("info").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}
}
*Может сложится ситуация в которой проект откажется компилироваться, в этом случае нужно закомментировать строку: setContentView (R.layout.activity_main); После первой компиляции можно ее вернуть.
Теперь можно насладится результатом.
Результат:
Автор: kb2fty7