如何获得最后的滚动视图位置,滚动视图 [英] How to get last scroll view position, scrollview
问题描述
我使用TableLayout。其中有一个项目,使其滚动我使用Tablelayout内滚动型的100。但我必须检测用户是否已经滚动到最后一行。如果用户已滚动至最后一个视图,然后用户将看到一个吐司消息。
但是,如何知道用户已经滚动到tablelayout的最后一行。我刚才提到从 TableLayout ScrollVie W¯¯里面的code。
I am using TableLayout. which have 100 of items to make it scrollable I am using Tablelayout inside ScrollView. But I have to detect whether the user have scrolled to the last row. If the user have scrolled to the last view then user will be shown a Toast message. But How to know that the user has scrolled to the last row of the tablelayout. I have referred the code from TableLayout inside ScrollView.
http://huuah.com/using-tablelayout-on-android/
推荐答案
如果新的滚动y坐标+滚动视图的高度> =身高的tableview,这意味着你已经到达列表的末尾。
If new scrolled y position + scroll view height >= tableview height that means you have reached the end of list.
要做到这一点,你必须写你custiom滚动视图。
To achieve this you have to write your custiom scrollview.
步骤1 您必须创建扩展滚动型的自定义滚动视图
Step-1 You have to create custom scroll view extending 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);
}
}
}
步骤2 创建监听器来检测scrollchanged
Step-2 Create a Listener to detect scrollchanged
包com.sunil;
进口LDObservableScrollView;
package com.sunil; import LDObservableScrollView;
public interface LDObservableScrollViewListener {
void onScrollChanged(LDObservableScrollView scrollView, int x, int y, int oldx, int oldy);
}
步骤3 在布局XML而不是滚动型使用自定义的滚动视图
Step-3 in layout xml instead of ScrollView use the custom scroll view
<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>
步骤4 在活动类或您要检测的滚动事件中使用follwoing code
Step-4 In your activity class or where you want to detect the scroll event use the follwoing code
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 ::");
}
}
这篇关于如何获得最后的滚动视图位置,滚动视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!