博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android horizontalscrollview 滑动事件,ScrollView的滑动监听(以HorizontalScrollView为例)
阅读量:1529 次
发布时间:2019-04-21

本文共 1549 字,大约阅读时间需要 5 分钟。

ScrollView不能像其他组件一样使用onScrollChanged()方法是因为它用protected封装了

protected void onScrollChanged(int x, int y, int oldx, int oldy);

想要实现监听需要简单自定义组件.

1:自定义组件

public class ObservableScrollView extends HorizontalScrollView {

private ScrollViewListener scrollViewListener = null;

public ObservableScrollView(Context context) {

super(context);

}

public ObservableScrollView(Context context, AttributeSet attrs,

int defStyle) {

super(context, attrs, defStyle);

}

public ObservableScrollView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public void setScrollViewListener(ScrollViewListener scrollViewListener) {

this.scrollViewListener = 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);

}

}

}

接口:

public interface ScrollViewListener {

void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy);

}

2:使用监听

horizontalScrollView.setScrollViewListener(new ScrollViewListener() {//滑动监听,获取图片

@Override

public void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy) {

int scrollX = scrollView.getScrollX();

int width = scrollView.getWidth();

int scrollViewMeasuredWidth = holder.imageSL.getChildAt(0).getMeasuredWidth();

if ((scrollX + width) == scrollViewMeasuredWidth) {

/ System.out.println("滑动到了底部 scrollY=" + scrollX + "height=" + width + "scrollViewMeasuredHeight=" + scrollViewMeasuredWidth);

}

}

});

转载地址:http://ixwdy.baihongyu.com/

你可能感兴趣的文章
什么是服务熔断?
查看>>
服务器压力过大?CPU打满?我来帮你快速检查Linux服务器性能
查看>>
C++面经总结之《Effective C++》(一)
查看>>
C++面经总结之《Effective C++》(二)
查看>>
这是什么“虎狼之词”啊!!!程序员的健康问题,看一线老中医怎么说!!!
查看>>
打开我的收藏夹 -- Python数据分析杂谈
查看>>
linux shell — 6.初识 EXT2 文件系统
查看>>
python - 【用户、商品】【购买、浏览】数据处理
查看>>
python - sql + pandas 与 sqlite 结合
查看>>
python - 使用sql 分析(06 - 15)国内各省GDP
查看>>
python - 抓取汇率数据分析美元和欧元对RMB的变化曲线
查看>>
python 数据科学 - 【回归分析】 ☞ 线性回归(2)
查看>>
设计模式——工厂模式
查看>>
Unity中实现有限状态机FSM
查看>>
Unity中实现反弹
查看>>
U3D游戏开发框架(九)——事件序列
查看>>
Unity中解决“SetDestination“ can only be called on an active agent that has been placed on a NavMesh
查看>>
Unity中的刚体
查看>>
Unity中的坐标转换
查看>>
Unity中为什么不能对transform.position.x直接赋值?
查看>>