package cn.testscrollview;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.ScrollView;import android.app.Activity;/** * Demo描述: * 監聽ScrollView滑動到頂端和底部 * * 注意事項: * 1 mScrollView.getChildAt(0).getMeasuredHeight()表示: * ScrollView所佔的高度.即ScrollView內容的高度.常常有一 * 部分內容要滑動後才可見,這部分的高度也包含在了 * mScrollView.getChildAt(0).getMeasuredHeight()中 * * 2 view.getScrollY表示: * ScrollView頂端已經滑出去的高度 * * 3 view.getHeight()表示: * ScrollView的可見高度 * */public class MainActivity extends Activity { private ScrollView mScrollView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();} private void init(){ mScrollView=(ScrollView) findViewById(R.id.scrollView); mScrollView.setOnTouchListener(new TouchListenerImpl()); } private class TouchListenerImpl implements OnTouchListener{@Overridepublic boolean onTouch(View view, MotionEvent motionEvent) {switch (motionEvent.getAction()) {case MotionEvent.ACTION_DOWN:break;case MotionEvent.ACTION_MOVE: int scrollY=view.getScrollY(); int height=view.getHeight(); int scrollViewMeasuredHeight=mScrollView.getChildAt(0).getMeasuredHeight(); if(scrollY==0){ System.out.println("滑動到了頂端 view.getScrollY()="+scrollY); } if((scrollY+height)==scrollViewMeasuredHeight){ System.out.println("滑動到了底部 scrollY="+scrollY); System.out.println("滑動到了底部 height="+height); System.out.println("滑動到了底部 scrollViewMeasuredHeight="+scrollViewMeasuredHeight); }break;default:break;}return false;} };}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ScrollView android:id="@+id/scrollView" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello_world"/> </ScrollView></RelativeLayout>