我在google和stackoverflow上搜索了一段时间,但我找不到解决方案。 是否有任何可能性让Android 2.2或2.1上的listview过度滚动就像感觉ui那样?! 就像在我的闹钟视图中一样:AlarmView Sense UI
答案 0 :(得分:14)
我很震惊地看到Chirag的答案得到了高度评价。它对任何人都没有帮助,因为它不完整而且不构建。它也没有引用它的来源。
原始代码可在此处找到:http://code.google.com/p/scroll-pager/
另请注意,滚动寻呼机代码是在GPL许可下发布的。
更新: 我和scroll-pager的作者交谈过,现在他已经转到麻省理工学院的许可证。
答案 1 :(得分:1)
Listview内置了对过度滚动的支持。查看setOverscrollMode及相关方法setOverscrollHeader和setOverscrollFooter。 ListView通过覆盖AbsListView.onOverscrolled来使用overscroll页眉/页脚;如果你想要不同的行为,你可以自己覆盖它来实现它。
答案 2 :(得分:1)
http://developer.android.com/reference/android/widget/ScrollView.html
你永远不应该使用带有ListView的ScrollView,因为ListView负责自己的垂直滚动。最重要的是,这样做会使ListView中的所有重要优化都无法处理大型列表,因为它有效地强制ListView显示其整个项目列表以填充ScrollView提供的无限容器。
答案 3 :(得分:1)
我可以看到这篇文章相当陈旧,但我最近发布了this open-source project on 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'
}
答案 4 :(得分:-5)
在xml文件中定义scrollview。
然后在你的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);
}
}
};
}