如何在资源中设置ListView样式?

tee*_*joe 5 android styles

我想在Theme中设置ListView样式,以便Application的所有ListView都将继承样式.我的代码看起来像这样:

style.xml

<!-- Light Theme of the Application -->
<style name="AppTheme.Light" parent="Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/ActionBar.Green</item>
    <item name="android:absListViewStyle">@style/AbsListViewStyle.Light</item>
</style>

<style name="AbsListViewStyle.Light" parent="android:style/Widget.AbsListView">
    <item name="background">@color/background_light</item>
    <item name="android:divider">@color/light_gray</item>
    <item name="android:dividerHeight">1dp</item>
    <item name="android:listSelector">@drawable/actionbar_background_green</item>
    <item name="android:drawSelectorOnTop">false</item>
    <item name="android:cacheColorHint">#00000000</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我在AndroidManifest.xml中设置了Activity的主题.但似乎该样式不适用于ListView.这是为什么?

tee*_*joe 9

最后我得到了原因,我应该使用android:listViewStyle属性而不是absListViewStyle:

style.xml

<!-- Light Theme of the Application -->
<style name="AppTheme.Light" parent="Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/ActionBar.Green</item>
    <item name="android:listViewStyle">@style/ListViewStyle.Light</item>
</style>

<style name="ListViewStyle.Light" parent="android:style/Widget.ListView">
    <item name="background">@color/background_light</item>
    <item name="android:divider">@color/light_gray</item>
    <item name="android:dividerHeight">1dp</item>
    <item name="android:listSelector">@drawable/actionbar_background_green</item>
    <item name="android:drawSelectorOnTop">false</item>
    <item name="android:cacheColorHint">#00000000</item>
</style>
Run Code Online (Sandbox Code Playgroud)

这样我就可以在Theme xml中应用ListView样式.