Как применить тему Android HoloEverywhere при использовании ActionBarSherlock?
Я создаю приложение, которое должно работать на Android 2.3, и я добавил библиотеки ActionBarSherlock и HoloEverywhere.
Чтобы использовать ActionBarSherlock, я должен использовать Theme.Sherlock примерно так:
<application
...
android:theme="@style/Theme.Sherlock"
... >
И это нормально.
Моя основная деятельность довольно проста: просто ListView с 5 строками (я не использую ListAcctivity).
<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"
... >
НО это ничего не меняет... Чего мне не хватает?
3 ответа
Чтобы включить тему Holo по умолчанию для каждого ListView, я зашел в файл styles.xml библиотеки HoloEverywhere, а затем изменил элемент "ListViewStyle", добавив следующую строку:
<item name="android:listSelector">@drawable/list_selector_holo_dark</item>
У меня была та же проблема с селектором ListView. Я думал, что HoloEveruwhere будет применять селектор holo (синий) по умолчанию (я пробовал оба Theme.HoloEverywhereLight и Theme.HoloEverywhereLight), но это не так. Может быть, я что-то упустил.
Я закончил настройку селектора вручную:
listView.setSelector(R.drawable.list_selector_holo_light);
У вас есть несколько доступных для рисования ресурсов в библиотеке, которые вы можете использовать (например, list_selector_holo_light).
Переносимым и правильным решением было бы наследовать от ListViewStyle и переопределить атрибут, делая это в вашем styles.xml.
Если у вас была официальная библиотека HoloEverywhere, развернутая удаленно на сервере (например, репозиторий Maven), вы не могли бы рассчитывать на то, что она внесет изменения в styles.xml (вы модифицируете ее для своих собственных нужд).