当我的视图滚出可见区域时,我该如何倾听

时间:2012-06-08 23:46:36

标签: android

在我的Android应用程序中,我有一个滚动视图,其中有很多子视图。 由于用户的滚动操作,当视图从可见切换到“对用户不可见”时,如何监听事件?

2 个答案:

答案 0 :(得分:0)

因此默认的ScrollView不提供任何类型的滚动侦听器,但是当用户滚动时它会调用onScrollChanged(),因此您可以实现自己的:

public class YourScrollView extends ScrollView {
  private ScrollListener scrollListener;

  ... // constructors etc

  public void setScrollListener(ScrollListener scrollViewListener) {
    this.scrollListener = scrollViewListener;
  }

  @Override
  protected void onScrollChanged(int x, int y, int oldx, int oldy) {
    super.onScrollChanged(x, y, oldx, oldy);

    if (scrollListener != null) {  //I don't care about the direction, you might.
      scrollListener.onScrollChanged(); 
    }
  }

  public static interface ScrollListener {
    public void onScrollChanged();
  }

}

现在,在您的onScrollChanged中,您可以查看自己的观点并查看它们是否可见:

int[] location = {0,0};
view.getLocationOnScreen(location);

//container height is the height of the scrollview
if (location[1] + view.getBottom() < 0 || location[1]  > containerHeight) {
  //your view is not visible
}

答案 1 :(得分:0)

你想要实现的目标是什么?也许我们可以提出其他解决方案。

您可以向子视图添加onVisibilityChanged事件处理程序。当视图的可见性发生变化时调用此方法。有关此问题的Android文档可以在here找到。