我正在构建一个应该在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"
... >
但这并没有改变任何事情......我错过了什么?
答案 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中的更改(您可以根据自己的需要对其进行修改)。