如何判断ScrollView的滚动条滚动到底部了呢?
网上查了许多资料,大部分都一样,跟着学了一个比较靠谱的,放在自己项目里没问题,我所实现的是在Scrollview里面添加了listview,注意由于两这会有滚动条的冲突,因此listview一定要自已复写,
代码有真相:
public class CompleteListView extends ListView {public CompleteListView(Context context, AttributeSet attrs) {super(context, attrs);}public CompleteListView(Context context) {super(context);}public CompleteListView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overridepublic void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expandSpec);}}
注意onMeasure(int widthMeasureSpec, int heightMeasureSpec)方法是解决冲突的方法。
项目需求是当scrollview滚动到最底端时listview进行加载更多。
判断方法在,
该类需要implents OnTouchListener
@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:break;case MotionEvent.ACTION_MOVE:index++; break;default:break;}if(event.getAction()==MotionEvent.ACTION_UP && index > 0){index=0;mLastY = scrollView.getScrollY();//赋值给mLastY//alllinear是scrollview里包括的那个linearlayout布局
if(mLastY == (alllinear.getHeight()-scrollView.getHeight())){//TODO//滑动到底部,你要做的事
}}return false;}
不好意思,有几个步骤很重要不加的话你会发现没有效果的:
1:定义Scrollview scrollview,
2:为了优化滑动监听加一个成员变量:int index;
3:findviewById不必说,
4:scrollView.setOnTouchListener(this);//很重要··················
如果觉得《如何判断Scrollview滚动条滚动到底部》对你有帮助,请点赞、收藏,并留下你的观点哦!