ScrollView:使用Holo更改边缘效果颜色

时间:2012-07-22 19:17:01

标签: android styles themes scrollview

我目前正在尝试更改滚动视图顶部或底部时出现的蓝色水平线的颜色。我试图在Android res文件夹中挖掘,但找不到任何明显的引用。

非常感谢任何帮助。

谢谢。

更新:在尝试实现继承ScrollView并将getSolidColor设置为替代值的类之后,它似乎不起作用。当我到达滚动视图的底部或顶部时出现的水平条仍为蓝色。

更新2:实际上,我不应该提到边缘效果颜色,更具体地说是overScroll效果,但我不知道这个术语。

7 个答案:

答案 0 :(得分:8)

我找到了我的问题的部分答案,我实际上是指ScrollView的overscroll属性。似乎可以使用以下代码禁用它:

<ScrollView
...
android:overScrollMode="never"
... />

但是,使用overScrollHeader和overScrollFooter属性修改颜色是不可能的,因为它们的值只是被忽略,而是显示默认的蓝色。

答案 1 :(得分:5)

您可以使用边缘效果覆盖库动态覆盖滚动视图上发光边缘的颜色。它使用起来非常简单,可以为您的应用添加一些独特性。在此处找到它:https://github.com/AndroidAlliance/EdgeEffectOverride

答案 2 :(得分:3)

您可以使用某种反射更改EdgeEffect的{​​{1}}颜色:

ScrollView

答案 3 :(得分:2)

我发现了一种非常简单(但却是hackish)的方法来实现这一点(改变发光的颜色):

int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android");
Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
androidGlow.setColorFilter(brandColor, PorterDuff.Mode.MULTIPLY);

我利用了一个事实,即发光效果实际上是一个Drawable(并且在那里不变异),并在其上应用了一个滤镜。 更多相关信息,请点击此处:http://evendanan.net/android/branding/2013/12/09/branding-edge-effect/

答案 4 :(得分:1)

do this using the api似乎没有简单的方法。但是,您可以尝试扩展ScrollView并覆盖getSolidColor()方法,将背景设置为其他颜色:

    new ScrollView(this) {
        @Override
        @ExportedProperty(category = "drawing")
        public int getSolidColor() {
            // Set a background color to a color you want for the edges.
        }
    };

答案 5 :(得分:1)

如果你想为渐变边缘和ScrollView的背景使用相同的颜色,你可以添加:

<ScrollView
...
android:background="@color/yourColor"
... />

如果您希望边缘为不同的颜色,则必须扩展ScrollView并覆盖getSolidColor()方法。

答案 6 :(得分:0)

这是您更改过度滚动边线的方式:

        final int edgeDrawableId = res.getIdentifier("overscroll_edge", "drawable", "android");
        final Drawable overscrollEdge = res.getDrawable(edgeDrawableId);
        overscrollEdge.setColorFilter(res.getColor(colorID), android.graphics.PorterDuff.Mode.SRC_ATOP);