Как применить тему Android HoloEverywhere при использовании ActionBarSherlock?

Я создаю приложение, которое должно работать на Android 2.3, и добавил библиотеки ActionBarSherlock и HoloEverywhere.

Чтобы использовать ActionBarSherlock, я должен использовать Theme.Sherlock следующим образом:

<application
    ...
    android:theme="@style/Theme.Sherlock"
    ...  >

И это нормально.

Моя основная деятельность довольно проста: просто ListView с 5 строками (я не использую ListAcivity).

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/menuListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

Поскольку это Android 2.3, у меня все еще есть оранжево-черная тема (кроме ActionBar, конечно). Теперь я хочу добавить тему HoloEverywhere, изменив свой манифест следующим образом:

<application
    ...
    android:theme="@style/Theme.HoloEverywhereDark.Sherlock"
    ...  >

НО это ничего не меняет... Что мне не хватает?


comment
мне нужен счетчик, как ICS в предыдущих версиях. Но я попытался импортировать ActionBarSherlock и Holoeverywhere. Но в eclipse после импорта выдает много ошибок. И еще, пожалуйста, скажите, нельзя ли просто использовать holoeverywhere без ActionBarSherlock?   -  person Vins    schedule 12.09.2012
comment
какие ошибки? и да, вы можете использовать Holoeverywhere без actionbarsherlock   -  person Alexis    schedule 12.09.2012
comment
Вроде ресурс не нашел ошибок. Шаг, который я сделал для импорта, это->Файл->Новый проект->Проект Android из существующего кода.   -  person Vins    schedule 13.09.2012
comment
Убедитесь, что файл R.java сгенерирован правильно, иногда это не так. Также вы должны установить проект ActionBarSherlock в качестве библиотеки в свойствах проекта HoloEverywhere.   -  person Alexis    schedule 13.09.2012


Ответы (3)


Чтобы включить тему Holo по умолчанию для каждого ListView, я зашел в файл styles.xml библиотеки HoloEverywhere, а затем изменил элемент «ListViewStyle», добавив эту строку:

<item name="android:listSelector">@drawable/list_selector_holo_dark</item>
person Alexis    schedule 27.07.2012

У меня была такая же проблема с селектором ListView. Я думал, что HoloEveruwhere будет применять голографический селектор (синий) по умолчанию (я пробовал и Theme.HoloEverywhereLight, и Theme.HoloEverywhereLight), но это не так. Может быть, я что-то упускаю.

В итоге я установил селектор вручную:

listView.setSelector(R.drawable.list_selector_holo_light);

У вас есть несколько ресурсов для рисования в библиотеке, которые вы можете использовать (например, list_selector_holo_light).

person Iñigo    schedule 27.07.2012
comment
это на самом деле работает, но тогда я должен сделать это для каждого ListView. - person Alexis; 27.07.2012

Портативным и правильным решением было бы наследовать от ListViewStyle и переопределить атрибут, сделав это в файле styles.xml.

Если бы у вас была официальная библиотека HoloEverywhere, удаленно развернутая на сервере (например, репозиторий Maven), вы не могли бы полагаться на то, что она вносит изменения в файл styles.xml (вы изменяете его для своих нужд).

person saiyancoder    schedule 05.12.2012