12

我正在构建一个应该在 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"
    ...  >

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

4

3 回答 3

7

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

<item name="android:listSelector">@drawable/list_selector_holo_dark</item>
于 2012-07-27T13:13:59.337 回答
3

我对 ListView 的选择器有同样的问题。我虽然默认情况下 HoloEveruwhere 会应用全息选择器(蓝色)(我已经尝试过 Theme.HoloEverywhereLight 和 Theme.HoloEverywhereLight),但它没有。也许我错过了一些东西。

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

listView.setSelector(R.drawable.list_selector_holo_light);

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

于 2012-07-27T10:34:31.870 回答
2

一个可移植且正确的解决方案是从 ListViewStyle 继承并覆盖该属性,使其在您的 styles.xml 中。

如果您将 HoloEverywhere 官方库远程部署在服务器上(例如 Maven 存储库),您就不能依赖它来维护 styles.xml 的更改(您正在根据自己的需要对其进行修改)。

于 2012-12-05T19:29:41.773 回答