ActionBarSherlock или ActionBar для Android 2.1

в 12:35, , рубрики: ActionBar, android, Песочница, Разработка под android, метки: ,

Вступление

Недавно столкнулся с проблемой отсутствия элемента 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.Создаем новый проект:
image
2.Подключаем к нему нашу библиотеку. Для этого в «Properties» нашего проекта на закладке Android нажимаем кнопку add, выбираем нужную нам библиотеку «library», подтверждаем выбор:
image
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); После первой компиляции можно ее вернуть.

Теперь можно насладится результатом.

Результат:
image

Автор: kb2fty7

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js