2015-06-29 52 views
2

我的应用程序的主要主题继承自Theme.AppCompat,并且我创建了一个选择器,允许在按下并聚焦棒棒糖上的按钮时发生涟漪效果。在AppCompat主题中覆盖默认列表视图突出显示的颜色

但是,当我回到4.0设备时,当我关注列表视图项目时,默认情况下它将默认恢复为难看的蓝色。我已经到处寻找定义这种颜色的特质,希望能在没有任何运气的情况下覆盖它 - 任何想法我都能做到这一点?

回答

5

添加到您的主题:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    ... 
    <item name="android:listViewStyle">@style/ListViewAppTheme</item> 
    <item name="android:listViewWhiteStyle">@style/ListViewAppTheme.White</item> 
</style> 
<style name="ListViewAppTheme" parent="Base.Widget.AppCompat.ListView"> 
    <item name="android:listSelector">@drawable/abc_list_selector_dark</item> 
    <item name="android:divider">@drawable/ab_divider_light</item> 
    <item name="android:dividerHeight">1px</item> 
</style> 

<style name="ListViewAppTheme.White" parent="Base.Widget.AppCompat.ListView.White"> 
    <item name="android:listSelector">@drawable/abc_list_selector_dark</item> 
    <item name="android:divider">@drawable/ab_divider_light</item> 
    <item name="android:dividerHeight">1px</item> 
</style> 

更改@drawable/abc_list_selector_dark你想使用的任何选择。作为额外的好处,我添加了如何更改列表视图的分隔线及其高度。

+0

你可以使用listSelector的颜色选择器,还是它必须是实际的drawables? – hendersawn

+0

您可以使用颜色选择器。你仍然会称之为'@ drawable/my_colors_selector',而不是在选择器中使用实际图像,只需使用@ drawable/my_color – jmateo

+0

不幸的是,似乎没有工作。列表视图似乎仍然从SOMEWHERE获得了令人厌恶的默认蓝色,尽管我无法弄清楚在哪里。 – hendersawn

3

不幸的是似乎没有工作。列表视图仍然似乎 从SOMEWHERE得到那令人厌恶的默认蓝色,虽然 我不知道在哪里。

我曾经觉得喜欢你,无论在恶心和愤怒某处一部分。不过,我设法摆脱它。

如果我记得好,罪魁祸首应该是android:listChoiceBackgroundIndicator。试试这个:

<style name="MainTheme" parent="Theme.AppCompat"> 

    <item name="android:listChoiceBackgroundIndicator">@drawable/my_selector</item> 
    <item name="listChoiceBackgroundIndicator">@drawable/my_selector</item> 

</style> 
相关问题