【问题标题】:SwipeRefreshLayout gesture detection in drawer抽屉中的 SwipeRefreshLayout 手势检测
【发布时间】:2014-09-03 11:45:48
【问题描述】:

我在抽屉中使用 SwipeRefreshLayout。当我在列表视图中向上和向下滚动时,手势应该是直线向上和向下,如果手指只移动一点点而不抬起它,滚动手势就会停止并开始打开关闭抽屉的手势。 如果我没有使用 SwipeRefreshLayout,滚动手势在我抬起手指之前不会停止。

这是布局:

<android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_to_refresh_lisview_container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        tools:ignore="NestedWeights" >

        <views.IndexableListView
            android:id="@+id/listview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#FFFFFF" />
    </android.support.v4.widget.SwipeRefreshLayout>

代码与此相同: http://antonioleiva.com/swiperefreshlayout/

【问题讨论】:

    标签: android navigation-drawer gesture-recognition


    【解决方案1】:

    我遇到了同样的问题。您必须在滚动时“锁定”抽屉,并在滚动完成时再次解锁。为此,我使用了两件事:

    1. 将 OnScrollListener 添加到您的 listView 中,例如:

      mDrawerListView.setOnScrollListener(new AbsListView.OnScrollListener() {
          @Override
          public void onScrollStateChanged(AbsListView absListView, int i) {
              if (i == SCROLL_STATE_IDLE)
                  mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
              else
                  mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
          }
      
          @Override
          public void onScroll(AbsListView absListView, int i, int i2, int i3) {
      
          }
      });
      
    2. 为避免在尝试触发“刷新事件”时出现一些问题,您应该实施 spencer 在此链接上建议的解决方法:Issue 69074

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 2011-02-10
      相关资源
      最近更新 更多