滚动到底部或顶部响应的ScrollView使用
本文介绍滚动到底部或顶部响应(如加载更多)的ScrollView的使用。网上关于到达底部加载更多的listView示例很多,对于ScrollView却寥寥无几,下面介绍使用自定义的ScrollView来完成该功能的实例。
示例APK可从这些地址下载:Google Play, 360手机助手, 百度手机助手, 小米应用商店, 豌豆荚
示例代码地址见BorderScrollViewDemo,效果图如下:
1、引入公共库
引入TrineaAndroidCommon@Github(欢迎star和fork^_^)作为你项目的library(如何拉取代码及添加公共库),或是自己抽取其中的BorderScrollView@Github部分使用,BorderScrollView继承自ScrollView,可以自定义滚动到底部或顶部时需要完成的任务。
2、自定义layout
只需将定义的ScrollView标签换成cn.trinea.android.common.view.BorderScrollView标签即可,源码如下(其中的多个TextView只是为了将ScrollView撑满一屏幕):
3、设置onTop和onBottom事件
通过borderScrollView.setOnBorderListener(OnBorderListener onBorderListener)设置到达底部和顶部的响应。
OnBorderListener有onTop()和void onBottom()两个函数可以实现,分别在滑动到顶部和底部时被调用执行。代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
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使用相关推荐
- 滑动到底部或顶部响应的ScrollView实现
转:http://www.trinea.cn/android/滑动到底部或顶部响应的scrollview/ 两种实现方式的主要不同点在于判断滑动位置的地方,第一种方式在onScrollChanged函 ...
- js监听页面或元素scroll事件,滚动到底部或顶部
基本原理: 1.滚动到底部 元素的滚动距离 + 元素的可视距离 == 元素的滚动条总距离2.滚动到顶部 元素的滚动距离 == 0 监听页面滚动 <!DOCTYPE html> <ht ...
- 顶部布局随ScrollView滑动透明度渐变(QQ空间效果)
QQ控件顶部的工具条在整体的ScrollView从顶部滑动时会从透明逐渐变为solid纯色:虽然有人实现过 ActionBar随ScorllView上下拖动而透明度渐变效果 以及 仿QQ空间滚动Act ...
- android 滚动到底部,Android 控制ScrollView滚动到底部(示例代码)
在开发中,我们经常需要更新列表,并将列表拉倒最底部,比如发表微博,聊天界面等等, 这里有两种办法,第一种,使用scrollTo(): public static void scrollToBottom ...
- Android 控制ScrollView滚动到底部
在开发中,我们经常需要更新列表,并将列表拉倒最底部,比如发表微博,聊天界面等等, 使用fullScrol() 下面我们看一下这个函数: scrollView.fullScroll(ScrollView ...
- ScrollView滚动到底部3种方案(巧解现实产品一个需求)
在开发过程中,最近产品给了个需求.就不墨迹了,直接上需求图,然后在进行文本的讲解: 本分主要主要讲解第三种方法,并实现上面的需求. 先贴前2种实现ScrollView滚动到底部. 使用scrollTo ...
- android scrollview 滚动到底部判断,怎么判断android中ScrollView滑动到了最底部?
滚动到顶部判断: getScrollY() == 0 滚动到底部判断: View childView = getChildAt(0); childView.getMeasuredHeight() &l ...
- android 标题栏颜色渐变和阴影,ScrollView上下滑动监听,及判断scrollView是否滚动到底部
1.创建 ScrollListener 接口监听滑动距离 public interface ScrollListener {void onScrollChanged(ScrollListenerVi ...
- 界面为ScrollView时打开界面会自动滚动到底部之解决方法
界面为ScrollView时打开界面会自动滚动到底部之解决方法 参考文章: (1)界面为ScrollView时打开界面会自动滚动到底部之解决方法 (2)https://www.cnblogs.com/ ...
最新文章
- 错误---获取Input的值为空字符串
- (转载)简单linux C++内存池
- linux strace 用法
- 留存方法论:如何培养用户使用习惯?
- 【学习笔记】吴恩达机器学习 WEEK 0
- Android 开发中常用小技巧
- 电路常识性概念(2)-电容
- BGP 13条选路规则
- MySQL可以用localhost 连接,但不能用IP连接的问题
- python中的列表排序
- MapReduce实现词频统计
- 数据科学包5- pandas基础之基础运算
- 铁乐学python_day29_模块与包学习4
- 【洛谷习题】售货员的难题
- 基于JSP的鲜花商城源码
- 全国所有火车站站点信息
- 金山云服务器e1型,金山云-文档中心-重装系统
- EBS采购订单创建发票
- C++检测平面内两个三角形是否相交(逻辑清晰,手撕精简版)
- 微信 及支付宝 支付接口 功能
热门文章
- 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( No module named ‘numpy‘ )
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 MethodChannel 通信 )
- 【数据挖掘】贝叶斯信念网络 ( 马尔科夫假设 | 结构 | 有向无环图 | 参数 | 条件概率表 | 案例分析 )
- 【Kotlin】Kotlin 中使用 ButterKnife ( 仅用于适配 Kotlin 语言 | 不推荐新项目使用 )
- MongonDB 知识
- javascript实现正整数分数约分
- jQuery事件之鼠标事件
- java Socket Tcp 浏览器和服务器(一)
- js中表单验证常用到的正则表达式
- FireBug的控制台管理