在AppCompat主题中覆盖默认列表视图突出显示的颜色

时间:2015-06-29 18:33:27

标签: android android-listview android-appcompat android-theme

我的应用程序的主题继承自Theme.AppCompat,并且我创建了一个选择器,当你按下并将一个按钮聚焦在Lollipop上时,它允许发生Ripple效果。

然而,当我回到4.0设备时,当我聚焦列表视图项时,它默认返回到丑陋的蓝色。我到处寻找定义这种颜色的特性,希望在没有任何运气的情况下覆盖它 - 任何想法我怎么能这样做?

2 个答案:

答案 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更改为您要使用的选择器。作为额外的奖励,我添加了如何更改listview的分隔符及其高度。

答案 1 :(得分: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>