【问题标题】:Android - disable overscroll on HorizontalScrollViewAndroid - 在 Horizo​​ntalScrollView 上禁用过度滚动
【发布时间】:2014-05-23 02:38:22
【问题描述】:

如何在 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();
    }

【问题讨论】:

    标签: android horizontalscrollview


    【解决方案1】:

    就在文档中,请致电setOverScrollMode

    在存货 AOSP 中,在姜饼之前没有过度滚动效果,所以如何禁用它们的问题在某种程度上是没有意义的。一些制造商添加了自己的过度滚动效果,例如 TouchWiz 反弹效果。显然,由于效果不是 SDK 的一部分,所以 SDK 中没有禁用它们的方法!

    在撰写本文时,Froyo 及以下的占比约为 2%。在我看来,明智的做法是针对 sdk 版本 >= 9 并使用类似

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
            horizontalScrollView.setOverScrollMode(View.OVER_SCROLL_NEVER);
        }
    

    这样大多数用户不会看到发光过度滚动效果,但那些使用 TouchWiz 运行 Froyo 的 2% 或更少的用户仍然会看到反弹效果。如果你真的,绝对必须禁用所有你可以use an onScrollListener to prevent scrolling past the beginning or end或使用反射来处理TouchWiz的过度滚动效果,具体类似于this examplethis one

    【讨论】:

    • 它很奇怪,但 Eclipse 看不到这种方法。你确定它在 Android 2.2 下可用吗?
    • @AYMADA 我已经更新了地址 2.2 及以下的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多