Android - 禁用Horizo​​ntalScrollView上的过度滚动

AYM*_*ADA 5 android horizontalscrollview

如何在Android 2.2下禁用Horizo​​ntalScrollView上的过度滚动?

编辑

我用反射做这个:

    HorizontalScrollView hh = (HorizontalScrollView) findViewById(R.id.chartHorizontalView);
    viewCls = hh.getClass();
    try {
        Method m = viewCls.getMethod("setOverScrollMode",
                new Class[] { int.class });
        int OVER_SCROLL_NEVER = (Integer) viewCls.getField(
                "OVER_SCROLL_NEVER").get(hh);
        m.invoke(hh, OVER_SCROLL_NEVER);
    } catch (Exception e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

小智 7

它在文档中是正确的,调用setOverScrollMode

有库存的AOSP 直到Gingerbread都没有过度滚动效应,所以如何禁用它们的问题毫无意义.一些制造商增加了他们自己的过度滚动效果,例如TouchWiz弹跳效果.显然,由于效果不是SDK的一部分,因此SDK中没有禁用它们的方法!

在撰写本文时,Froyo及其下方约占2%.在我看来,明智的做法是针对sdk版本> = 9并使用类似的东西

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
        horizontalScrollView.setOverScrollMode(View.OVER_SCROLL_NEVER);
    }
Run Code Online (Sandbox Code Playgroud)

这样大多数用户都不会看到发光过度滚动效果,但使用TouchWiz运行Froyo的2%或更少用户仍会看到反弹效果.如果你 真的,绝对必须禁用所有过卷效果你可以使用onScrollListener来防止滚动开头或结束或使用反射来处理TouchWiz特别类似于这个例子这个