gpt4 book ai didi

android - 如何获取最后一个 ScrollView 位置,scrollview

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:56 26 4
gpt4 key购买 nike

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

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

最佳答案

如果新滚动的 y 位置 + ScrollView 高度 >= tableview 高度,这意味着你已经到达列表的末尾。

要实现这一点,您必须编写自定义 ScrollView 。

第 1 步 您必须创建扩展 ScrollView 的自定义 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 步 创建监听器以检测滚动变化

包 com.sunil; 导入 LDObservableScrollView;

public interface LDObservableScrollViewListener {

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

}

Step-3 在 layout xml 而不是 ScrollView 中使用自定义 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>

Step-4 在您的 Activity 类中或您想要检测滚动事件的地方使用以下代码

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 ::");
}
}

关于android - 如何获取最后一个 ScrollView 位置,scrollview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7609253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com