【问题标题】:Disable / Enable Scroll for ListView in android在 android 中禁用/启用 ListView 的滚动
【发布时间】:2014-03-21 12:27:04
【问题描述】:

我在ScrollView 中有一个ListView。我可以通过

启用ListView的滚动
listView.getParent().requestDisallowInterCeptTouchEvent(true);

但问题是当我在 listView 中向上滚动并到达顶部时,它应该滚动到父视图,即父滚动必须起作用。我怎样才能做到这一点 ?请有任何建议。

【问题讨论】:

标签: android listview android-listview scrollview


【解决方案1】:
listView.setOnTouchListener(new OnTouchListener() {

    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_MOVE) {
            return true; // Indicates that this has been handled by you and will not be forwarded further.
        }
        return false;
    }
});

要使视图无法选择,只需获取视图和.setClickable(false)

listView.setScrollContainer(false);

【讨论】:

  • return false 是否允许listview 滚动?
  • 你的回复对我很有用,我也用了你的方法
【解决方案2】:

您可以覆盖 ScrollView 类并在其中插入这些方法:

private boolean isScrollEnabled = true;

public void enableScroll(boolean isScrollEnabled ) {
    this.isScrollEnabled = isScrollEnabled ;
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    if (isScrollEnabled) {
        return super.onInterceptTouchEvent(ev);
    } else {
        return false;
    }
}

这是实现这一目标的最干净的解决方案。您只需调用 scrollView.enableScroll(true) 启用滚动或调用 scrollView.enableScroll(false) 禁用它。

【讨论】:

    【解决方案3】:

    我建议将您的上视图,即列表视图上方的任何视图组嵌入到列表视图标题中。 ListView 有一个方法,listview.addHeaderView()。这样,即使在小尺寸显示器上,您也可以滚动列表(全视图),并且不需要滚动视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 2011-07-06
      相关资源
      最近更新 更多