我的应用程序的主题继承自Theme.AppCompat,并且我创建了一个选择器,当你按下并将一个按钮聚焦在Lollipop上时,它允许发生Ripple效果。
然而,当我回到4.0设备时,当我聚焦列表视图项时,它默认返回到丑陋的蓝色。我到处寻找定义这种颜色的特性,希望在没有任何运气的情况下覆盖它 - 任何想法我怎么能这样做?
答案 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>