建议直接访问原文:滚动到底部或顶部响应的ScrollView使用
本文介绍滚动到底部或顶部响应(如加载更多)的ScrollView的使用。
关于实现原理可见:滑动到底部或顶部响应的ScrollView实现
本文可运行代码地址可见BorderScrollViewDemo,可运行APK地址TrineaAndroidDemo.apk。效果图如下:
BorderScrollView继承自ScrollView,可以自定义滚动到底部或顶部时需要完成的任务。使用如下:
一、自定义layout
只需将定义的ScrollView标签换成cn.trinea.android.common.view.BorderScrollView标签即可,源码如下(其中的多个TextView只是为了将ScrollView撑满一屏幕):
<cn.trinea.android.common.view.BorderScrollView android:id="@+id/scroll_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="@dimen/dp_40" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/top_text" android:layout_width="match_parent" android:layout_height="20dp" android:gravity="center" android:text="top text" /> <TextView android:id="@+id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/top_text" android:gravity="center" android:text="text1" /> <TextView android:id="@+id/text2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/text1" android:gravity="center" android:text="text2" /> <TextView android:id="@+id/bottom_text" android:layout_width="match_parent" android:layout_height="20dp" android:layout_below="@+id/text2" android:gravity="center" android:text="bottom text" /> </RelativeLayout> </com.trinea.android.common.view.BorderScrollView>
2、设置onTop和onBottom事件
通过borderScrollView.setOnBorderListener(OnBorderListener onBorderListener)设置到达底部和顶部的响应。
OnBorderListener有onTop()和void onBottom()两个函数可以实现,分别在滑动到顶部和底部时被调用执行。代码如下:
public class BorderScrollViewDemo extends Activity { private BorderScrollView borderScrollView; private TextView textView1; private TextView textView2; private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.border_scroll_view_demo); context = getApplicationContext(); borderScrollView = (BorderScrollView)findViewById(R.id.scroll_view); borderScrollView.setOnBorderListener(new OnBorderListener() { @Override public void onTop() { // may be done multi times, u should control it Toast.makeText(context, "has reached top", Toast.LENGTH_SHORT).show(); } @Override public void onBottom() { // may be done multi times, u should control it Toast.makeText(context, "has reached bottom", Toast.LENGTH_SHORT).show(); } }); textView1 = (TextView)findViewById(R.id.text1); textView2 = (TextView)findViewById(R.id.text2); Display display = getWindowManager().getDefaultDisplay(); textView1.setHeight(display.getHeight() / 2); textView2.setHeight(display.getHeight() / 2); } }
注意onTop和onBottom是有可能被多次执行的,需要自己控制,将在后面的实现原理中介绍具体原因~。
你可能还感兴趣:
scrollview中viewpager无法正常滑动问题
添加ScrollView后或外部容器为RelativeLayout时onFling不起作用,无法滑动问题
Android系统下载管理DownloadManager功能介绍及使用示例
Android性能优化经验总结滚动到底部或顶部响应的ScrollView使用
相关推荐
这个代码可以判断ScrollView是否滑动到了最下边或者最上边,同理,HorizontalScrollView也可以判断是否滑动到最右边或者最左边。使用方法就是直接用这个自定义控件并实现里面的OnScrollListener就可以了,会自动复写...
可以触发并且只触发一次scrollview的到底和到顶事件,无需其他文件,直接拷贝即可使用,使用时必须保证scrollview中有子view并传入到底事件回调接口
学习SCrollView整的小东西,实现循环翻页效果。利用停表加了自动滚动的效果。
此代码实现安卓ScrollView动画滚动到顶部,开发者可以自己定义自己想要的算法,代码比较简单,一分谢谢了
ScrollView 的滚动事件监听
由ScrollView和HorizontalScrollView整合的一个可以任意方向滚动的ScrollView
android scrollview 自动滚动到顶部或者底部 摘要: android scrollview 自动滚动到顶部或者底部 android scrollview 自动滚动到顶部或者底部 //设置默认滚动到顶部 scrollView.post(new Runnable() { @Override ...
Unity UGUI ScrollView(ScrollRect)嵌套滚动列表(横竖滑动列表)
非常实用于项目中,解决在scrollView中有分类栏目伴随滚动,滚动到顶部时就固定不动,使列表滚动显示区域最大化,对手势也进行了处理,不会有冲突,放心使用。
监听Scrollview滑动到最左边与最右边,很简单的一个小demo,看看就会了。
自定义拉到顶部和底部具有弹性ScrollView,支持下拉上拉弹性
对应这种页面结构应该毫无疑问是最底层是一个纵向滚动的scrollView,它的页面上面放一个固定高度的header,紧接着下面一个支持横向滚动切换的容器scrollView,容器上面才是各个页面具体的tableView,如下图: ...
自定义拉到顶部和底部具有弹性ScrollView
一个简单的ScrollView滚动视差,背景图片会随着ScrollView的滑动而动
显示dialog, Scrollview自动滚动
(7) 滚动到底部或顶部响应的ScrollView使用 (8) Gallery滑动一页效果 Demo (9) SearchView使用及搜索提示的实现 (10) Service Demo,包括启动service、绑定service、intent service、aidl service (11) ...
fragmeng+viewpager+顶部scrollview横向自动滚动
scrollVIew上实现图片的自动循环滚动。用到时间计时器,并且可手动滑。例如三张图片1,2,3,那么再拿图片3放在图片1前面,再拿图片1放在图片3后面
重写scrollView的onTouchEvent事件,在MotionEvent.ACTION_CANCEL和MotionEvent.ACTION_UP中通过反射获取scrollview中的OverScroller,然后获取OverScroller的状态判断scrollview是否结束滚动