尽管Android版本,使ListView看起来一样

时间:2016-01-25 14:22:21

标签: android listview android-theme

我的应用程序使用了android.support.v7.widget.ListViewCompat,我试图制作" Overscroll"预备棒棒糖和棒棒糖的效果相同。

在棒棒糖前,Overscroll有Holo-blue颜色,在Lollipop及以上,它使用colorPrimary属性。

我在SO上找到的大多数相关答案都非常复杂(我认为这应该是一个单行,在App主题中更可取)或者" borks"棒棒糖的默​​认效果,看起来很奇怪。

那么我可以写一下在棒棒糖前设备上将套印颜色设置为colorPrimary吗?

我的style.xml(App Theme)文件目前包含

    <item name="colorPrimary">@color/my_green</item>
    <item name="colorPrimaryDark">@color/my_forest</item>
    <item name="colorAccent">@color/my_soil</item>

    <item name="colorControlNormal">@color/my_green</item>
    <item name="colorControlActivated">@color/my_forest</item>
    <item name="colorControlHighlight">@color/white</item>

我也觉得很奇怪,在棒棒糖前的ListView中选择项目时使用colorControlHighlight颜色,但默认为holo-orange颜色。

1 个答案:

答案 0 :(得分:0)

Glow取自R.drawable.overscroll_edge,所以我猜你无法轻易取代它。用自定义drawable替换EdgeEffect类会更容易。参见:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.4_r1/android/widget/EdgeEffect.java#EdgeEffect

所以也许这就是你要找的东西:

enter image description here

不幸的是,这是真正隐藏的东西,你无法在没有反射的情况下获得那种光芒。上面的截图是在Gingerbread上拍摄的,所以如果你不害怕黑客攻击,那么它是可能的。代码很长,所以我不会在这里粘贴它。您可以在Carbon的ScrollView和RecyclerView类中找到实现。没有ListView(它现在被RecyclerView取代),但你也应该能够正常工作。这是Lollipop发光套装的边缘效果副本,所以看起来应该是这样的。

https://github.com/ZieIony/Carbon/blob/master/carbon/src/main/java/carbon/widget/RecyclerView.java