2014-02-28 28 views
5

我想在主题中设置ListView样式,以便应用程序的所有ListView都将继承样式。我的代码如下所示:如何在资源中设置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> 

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

回答

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> 

这样我就可以在Theme xml中应用ListView风格。

3

你需要把它放在你的ListView XML格式的列表视图中添加:

style="@style/AbsListViewStyle.Light" 
+0

如果我想根据应用程序主题更改ListView样式,应该怎么做? – teejoe

+0

你应该通过应用程序中设置的他们来扩展你的风格 – Unii