使用ActionBarSherlock时如何应用HoloEverywhere android主题?

时间:2012-07-27 06:46:51

标签: android android-actionbar actionbarsherlock android-theme android-holo-everywhere

我正在构建一个应该在android 2.3上运行的应用程序,我添加了ActionBarSherlock和HoloEverywhere库。

为了使用ActionBarSherlock,我必须像这样使用Theme.Sherlock:

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

没关系。

我的主要活动非常简单:只有一个包含5行的ListView(我不使用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"
    ...  >

但这并没有改变任何事情......我错过了什么?

3 个答案:

答案 0 :(得分:7)

默认情况下,为HoloEverywhere库的styles.xml文件中的每个ListView启用Holo主题,然后通过添加以下行来修改“ListViewStyle”元素:

<item name="android:listSelector">@drawable/list_selector_holo_dark</item>

答案 1 :(得分:3)

我对ListView的选择器有同样的问题。我虽然HoloEveruwhere默认应用全息选择器(蓝色)(我已经尝试过Theme.HoloEverywhereLight和Theme.HoloEverywhereLight),但事实并非如此。也许我错过了什么。

我最终手动设置了选择器:

listView.setSelector(R.drawable.list_selector_holo_light);

您可以使用库中的几个可绘制资源(例如list_selector_holo_light)。

答案 2 :(得分:2)

一个可移植且正确的解决方案是从ListViewStyle继承并覆盖该属性,在styles.xml中进行此操作。

如果您在服务器(例如Maven repo)上远程部署了HoloEverywhere官方库,则无法依赖它来修改styles.xml中的更改(您可以根据自己的需要对其进行修改)。