如何获取最后一个滚动视图位置,scrollview

bap*_*api 5 android scrollview tablelayout

我正在使用TableLayout.有100个项目可以滚动我在ScrollView中使用Tablelayout.但我必须检测用户是否已滚动到最后一行.如果用户已滚动到最后一个视图,则将向用户显示Toast消息.但是如何知道用户已滚动到tablelayout的最后一行.我已经在ScrollVie w中引用了TableLayout中的代码.

http://huuah.com/using-tablelayout-on-android/

Sun*_*hoo 13

如果新滚动的y位置+滚动视图高度> = tableview高度,则表示您已到达列表的末尾.

要实现这一点,你必须写你的custiom scrollview.

步骤1您必须创建扩展ScrollView的自定义滚动视图

package com.sunil;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ScrollView;

public class LDObservableScrollView extends ScrollView {

    private LDObservableScrollViewListener scrollViewListener = null;

    public LDObservableScrollView(Context context) {
        super(context);
    }

    public LDObservableScrollView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public LDObservableScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public void setScrollViewListener(LDObservableScrollViewListener 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);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

步骤2创建一个侦听器以检测scrollchanged

包com.sunil; import LDObservableScrollView;

public interface LDObservableScrollViewListener {

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

}
Run Code Online (Sandbox Code Playgroud)

布局xml中的步骤3而不是ScrollView使用自定义滚动视图

<com.abc.LDObservableScrollView android:layout_width="fill_parent" android:layout_marginTop="1dip"
        android:id="@+id/OLF_ScrollView" android:layout_height="fill_parent" android:background="@drawable/small_list_back">
        <TableLayout android:layout_width="fill_parent" android:id="@+id/OLF_tableLayout_TableLayout" android:layout_height="fill_parent">
        </TableLayout>
    </com.abc.LDObservableScrollView>
Run Code Online (Sandbox Code Playgroud)

步骤4在您的活动类中或您要检测滚动事件的位置使用以下代码

public class DetectHere implements LDObservableScrollViewListener{
...


LDObservableScrollView scrollView = (LDObservableScrollView)view.findViewById(R.id.OLF_ScrollView);
         scrollView.setScrollViewListener(this);

.....

@Override
    public void onScrollChanged(LDObservableScrollView scrollView, int x,
            int y, int oldx, int oldy) {
        // TODO Auto-generated method stub
        if((scrollView.getHeight()+y) >= tableLayout.getHeight()){
            Log.e("Custom Listener ", "END OF LIST OCCURRED ::");
        }
    }
Run Code Online (Sandbox Code Playgroud)