5

我在 google 和 stackoverflow 上搜索了一段时间,但找不到解决方案。是否有可能像 sense ui 那样在 Android 2.2 或 2.1 上获得列表视图过度滚动?!就像在我的警报视图中一样:AlarmView Sense UI

4

5 回答 5

14

看到 Chirag 的回答得到如此高的评价,我感到很震惊。它对任何人都没有帮助,因为它不完整且无法构建。它也没有引用其来源。

原始代码可在此处找到:http ://code.google.com/p/scroll-pager/

另请注意,滚动页面代码是在 GPL 许可下发布的。

更新:我与 scroll-pager 的作者交谈,他现在已切换到 MIT 许可证。

于 2012-02-22T06:12:23.153 回答
1

Listview 具有对过度滚动的内置支持。查看setOverscrollMode和相关方法setOverscrollHeadersetOverscrollFooter。ListView 通过覆盖AbsListView.onOverscrolled来使用过度滚动页眉/页脚;如果你想要不同的行为,你可以自己重写它来实现它。

于 2011-08-12T15:25:10.413 回答
1

http://developer.android.com/reference/android/widget/ScrollView.html

永远不要将 ScrollView 与 ListView 一起使用,因为 ListView 负责自己的垂直滚动。最重要的是,这样做会破坏 ListView 中处理大型列表的所有重要优化,因为它有效地强制 ListView 显示其整个项目列表以填充 ScrollView 提供的无限容器。

于 2012-07-30T07:06:25.657 回答
1

我可以看到这篇文章很老了,但我最近在 GitHub 上发布了这个开源项目,它解决了这个问题,并且可以帮助其他人在未来解决类似的过度滚动问题。

它基本上为许多核心 Android 可滚动视图提供了类似 iOS 的过度滚动效果 - ListView 就是其中之一,并且非常易于应用。

特别是对于列表视图,您需要做的就是启用它:

ListView listView = ... // For example: (ListView) findViewById(R.id.list_view);
OverScrollDecoratorHelper.setUpOverScroll(listView);

要将项目包含在您的项目中,请将其添加到您的 build.gradle 中:

dependencies {
    // ...

    compile 'me.everything:overscroll-decor-android:1.0.0'
}
于 2015-11-27T15:25:05.747 回答
-5

在您的 xml 文件中定义滚动视图。

然后在你的java文件中写下这个:

scrollView = (ScrollView) findViewById(R.id.scr);
    contentView = (ViewGroup) findViewById(R.id.r2);
    scrollView.setOnTouchListener(new ScrollPager(scrollView, contentView));
    scrollView.post(new Runnable() {
        public void run() {
            scrollView.scrollTo(0, contentView.getPaddingTop());
        }
    });

并在上面的 java 文件中添加一个类:

public class ScrollPager implements OnTouchListener
public ScrollPager(ScrollView aScrollView, ViewGroup aContentView)
    {
        mScrollView = aScrollView;
        mContentView = aContentView;
        scroller = new Scroller(mScrollView.getContext(), new OvershootInterpolator());
        task = new Runnable()
        {
            public void run()
            {
                scroller.computeScrollOffset();
                mScrollView.scrollTo(0, scroller.getCurrY());

                if (!scroller.isFinished())
                {
                    mScrollView.post(this);
                }
            }
        };
    }
于 2012-01-12T09:33:09.567 回答