简体   繁体   中英

Android Scrollview : How to detect begin and end of scrollview

Here is my layout XML. I am adding more rows in a table dynamically.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:myapp="http://schemas.android.com/apk/res/com.tweets"
            android:id="@+id/screen"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"
            android:background="#FFFFFF">

    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 android:layout_width="fill_parent"
                 android:layout_height="fill_parent"
                 android:id="@+id/main"
                 android:background="#FFFFFF">

        <TableRow android:id="@+id/TableRow01"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content">

            <TextView android:id="@+id/TLocView01"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:textSize="15px"
                      android:textStyle="bold"
                      android:textColor="#000000"
                      android:text="FatWallet Tweets:">
            </TextView>

        </TableRow>
   </TableLayout>
</ScrollView>

I want to implement paging with scrollview. If user tries to scroll backward or forward then i want to make previous page and next page requests. How to do that? Any hint will be appreciated. Thanks.

Here is a dirty way to solve that problem

tl = (TableLayout) findViewById(R.id.main);

    tl.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            int y = v.getHeight();
            int y1 = (int) event.getY();

            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN: {
                if (y1 + 50 >= y & more) {
                    //System.out.println("ACTION_DOWN " + bpg);
                    more();

                }
                break;
            }

            case MotionEvent.ACTION_UP: {
                if (y1 - 50 <= 100 & bpg > 1) {
                    //System.out.println("ACTION_UP");
                    less();

                }
                break;
            }
            case MotionEvent.ACTION_MOVE: {
                //System.out.println("ACTION_MOVE " + bpg);
                if (y1 - 50 <= 100 & bpg > 1) {
                    //System.out.println("ACTION_UP");
                    less();

                }
                break;
            }
            }

            //System.out.println("Test " + y + "  " + y1);
            return true;
        }
    });

ACTION_DOWN event is handling next page and ACTION_MOVE event is handling previous page. I am checking whether current Y is almost at the end or at the beginning then only act. It is not clean but one way to make it work.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM