-
如何判断ScrollView滑动到最底部?10
ListView可以添加监听器OnScrollListener来判断是否缓动到了底部。
但是ScrollView没有该功能,那如何判断呢?求教中。。。
我要做的效果是:当ScrollView滑动到最底部时需要请求下一页的数据。
问题补充:Rainbow702 写道调用函数判断如下:if(getScrollY() + getHeight() >= computeVerticalScrollRange()) { Log.d(TAG,"------滚动到最下方------"); } else { Log.d(TAG,"没有到最下方"); }
我因该放在哪个事件中判断呢?
我滑动后直到ScrollView停止,而ScrollView没有滑动停止监听功能的,感觉沒地方写。阁下是如何处理的?
问题补充:Rainbow702 写道给你找了个示例,上面写得很全:
http://disanji.net/2011/02/19/solve-viewflipper-scrollview-flip-problem/
我以前想实现的功能是,让 ScroolView 滚动至最下面,直接使用类中的 fullScroll() 方法就可以的。
scrollView.fullScroll(View.FOCUS_DOWN)的话是自动滚到最底部吧,还有scrollView.computeVerticalScrollRange()这个方法是Protected的,不是public的,我引用不到。呵呵
问题补充:ListView可以添加监听器OnScrollListener来判断是否缓动到了底部。
但是ScrollView没有该功能,也就是说ScrollView.setOnScrollListener()是不可以的!
问题补充:好像if(scrollView.getScrollY() + scrollView.getHeight() >= scrollView.computeVerticalScrollRange())不对的嘛。
我打印出来:
scrollView.getHeight()是固定值410
crollView.computeVerticalScrollRange()也是固定值320
这样的话无论如何条件都是成立的。
问题补充:我加了GestureDetector可以无视,主要看public int computeVerticalScrollRange()public class MyScrollView extends ScrollView { GestureDetector gestureDetector; public MyScrollView(Context context) { super(context); // TODO Auto-generated constructor stub } public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public MyScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } public int computeVerticalScrollRange(){ return super.computeHorizontalScrollRange(); } public int computeVerticalScrollOffset(){ return super.computeVerticalScrollOffset(); } public void setGestureDetector(GestureDetector gestureDetector) { this.gestureDetector = gestureDetector; } @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); return gestureDetector.onTouchEvent(event); } @Override public boolean dispatchTouchEvent(MotionEvent ev){ gestureDetector.onTouchEvent(ev); super.dispatchTouchEvent(ev); return true; }
问题补充:
scrollViewListener是OnScrollChangedListener对象?它没有onScrollChanged(this, x, y, oldx, oldy);方法的啊。
如果是OnScrollListener对象也没有该方法的!
问题补充:给个具体的类吧,你说的那个scrollViewListener到底什么对象?
问题补充:我看了上面一位仁兄的:
@Override
protected void onScrollChanged(int x, int y, int oldx, int oldy) {
super.onScrollChanged(x, y, oldx, oldy);
if (scrollViewListener != null) {
scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);
}
}
但是scrollViewListener是什么对象?不是OnScrollListener,也不是OnScrollChangedListener对象,怪怪。
问题补充:试了,这样的话肯定变化了
问题补充:不对,我发现还是320!
我滚动到最底部,打印的数据为:
getScrollY()=590
getHeight()=410
computeVerticalScrollRange()=320
我感觉 if(getScrollY() + getHeight() >= computeVerticalScrollRange())
三者之间的关系有问题。
2011年9月01日 09:47
10个答案 按时间排序 按投票排序
-
采纳的答案
调用函数判断如下:
if(getScrollY() + getHeight() >= computeVerticalScrollRange()) { Log.d(TAG,"------滚动到最下方------"); } else { Log.d(TAG,"没有到最下方"); }
2011年9月01日 09:53
-
的确,我看他的 scrollView.setScrollViewListener(this) ,然后去找 setScrollViewListener() 这个方法,也没找到。
PS:我上面提的那个建议不知道你有没有试过引用所以,你试着在你的scrollView上多加几个组件(如果你是在ScrollView中嵌入了一个TextView的话,那就在其中输入一些字符),看看返回值还是不是你说的 320?2011年9月01日 17:58
-
引用它没有onScrollChanged(this, x, y, oldx, oldy);方法的啊
onScrollChanged() 方法是 View() 类里的,ScrollView 应该是继承了这个方法2011年9月01日 17:48
-
引用
protected int computeVerticalScrollRange ()
The scroll range of a scroll view is the overall height of all of its children.
Returns
the total vertical range represented by the vertical scrollbar. The default range is the drawing height of this view.
上面是这个API的说明,第一句说明了这个方法的返回值应该是所有子组件的高度的和。所以,你试着在你的scrollView上多加几个组件(如果你是在ScrollView中嵌入了一个TextView的话,那就在其中输入一些字符),看看返回值还是不是你说的 320?
2011年9月01日 16:10
-
晕之前看错了 继承scrollview的时候 滚动时候的监听 @Override protected void onScrollChanged(int x, int y, int oldx, int oldy) { super.onScrollChanged(x, y, oldx, oldy); if (scrollViewListener != null) { scrollViewListener.onScrollChanged(this, x, y, oldx, oldy); } } //这个获得总的高度 public int getTotalVerticalScrollRange() { return computeVerticalScrollRange(); activity的时候 scrollView.setScrollViewListener(this) 在这个监听的过程中 当中 getScrollY()=getTotalVerticalScrollRange()这样用该就是到底部了。
2011年9月01日 15:50
-
引用
scrollView.getHeight()是固定值410
crollView.computeVerticalScrollRange()也是固定值320
这个不会吧,你把你继续自 ScrollView 的类的代码贴个出来看看呢2011年9月01日 13:41
-
scrollView.computeVerticalScrollRange()这个方法是Protected的,不是public的,我引用不到。
对,这个比较恶心。不过,还是有办法的,你可以创建一个类继承ScrollView, 新建一个方法,把这个方法设置成public的,在里面调用computeVerticalScrollRange(), 一切问题都解决了。2011年9月01日 11:13
-
实现原理: 通过手指的滑动,判断数据大小 然后动态改变数据, firstVisbleItem 第一个可见的item visibleItemCount 可见的Item个数 totalItemCount 总的个数 * lastItem 可见状态中,最后一个item @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { lastItem = firstVisibleItem + visibleItemCount - 1; } /** * 如果视图正在滚动,此方法将被调用之前,滚动下一帧呈现。特别是,它会被调用之前调用getView */ @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (lastItem == adapter.getCount() && scrollState == OnScrollListener.SCROLL_STATE_IDLE) { nowpage++; 。。。。。。 adapter.notifyDataSetChanged(); } }
2011年9月01日 10:50
-
给你找了个示例,上面写得很全:
http://disanji.net/2011/02/19/solve-viewflipper-scrollview-flip-problem/
我以前想实现的功能是,让 ScroolView 滚动至最下面,直接使用类中的 fullScroll() 方法就可以的。2011年9月01日 10:32
-
引用我因该放在哪个事件中判断呢?
你可以定义一个手势响应类来处理响应事件,覆写其 onScroll() 方法,把上面的代码放到其中即可2011年9月01日 10:30
相关推荐
这个代码可以判断ScrollView是否滑动到了最下边或者最上边,同理,HorizontalScrollView也可以判断是否滑动到最右边或者最左边。使用方法就是直接用这个自定义控件并实现里面的OnScrollListener就可以了,会自动复写...
SwiftUI之判断ScrollView是否滑动到底部及ChildSizeReader的使用文章中所使用的示例代码。
主要给大家介绍了关于Android中控制和禁止ScrollView自动滑动到底部的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
这个demo是一个测试scrollview的横向以及纵向的最末端的判断
Android ScrollView自动滑动
主要是onTouchListener监听事件,监视什么时候滑到底部 同时要理解getMeasuredHeight和getHeight的区别 getMeasuredHeight:全部的长度 包括隐藏的 getHeight:在布局中展示出来的长度 布局文件: android:layout...
- 顶部到底部的演示 - 自下而上的演示 - 从左到右的演示 - 右侧演示 - 响应GridView演示 - TreeViewWithChildrenIndent演示 特征: - ListView和GridView和TreeView - 无限的项目 - 项目在不同的大小...
时候我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部。可惜的是SDK并没有相应的方法,不过倒是提供了一个 代码如下: protected void onScrollChanged(int x, int y, int oldx, ...
有详细的代码注释,代码量少,易懂,当scrollview滑动至顶部或者底部时,都可以在回弹
scrollview的使用。判断scrollview滑动到顶部和底部。scrollTo和scrollBy的区别。
下拉刷新,滑动到底部自动加载的listview 最后把时候还有下一页传入进去
我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部。可惜的是SDK并没有相应的方法,不过倒是提供了一个 protected void onScrollChanged(int l, int t, int oldl, int oldt) 显然...
1.ScrollView使用介绍 scrollviewItem.xml ...Android ScrollView滑动到顶部和底部: Scrollview禁止滑动: scrollView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View
底部视图往下移动时,当滑动到一定位置时(表现为底部的白色视图和暗红色视图重合),白色视图将继续移动。 小编注:这个Demo中,当出现暗红色视图时,如果白色视图能自动隐藏,会更能体现效果。小编相信通过修改...
一个滑动回弹效果的自定义view,重写scrollview,实现回弹效果,开发实用技术
对应这种页面结构应该毫无疑问是最底层是一个纵向滚动的scrollView,它的页面上面放一个固定高度的header,紧接着下面一个支持横向滚动切换的容器scrollView,容器上面才是各个页面具体的tableView,如下图: ...
解决了ScrollView和listView之间的冲突,简单的实现了微信中聊天页面中拖动的效果,如有不足,请多批评指正!
可以触发并且只触发一次scrollview的到底和到顶事件,无需其他文件,直接拷贝即可使用,使用时必须保证scrollview中有子view并传入到底事件回调接口
今日准备把微信小程序的下拉刷新做一下,没想到我绑定了bindscrolltolower事件,但是居然不触发,我设置了lower-threshold高度无济于事.最后经过不懈的努力,找了很多资料,才发现,居然要设置scroll-view高度,于是我...