我在抽屉中使用 SwipeRefreshLayout。当我在 ListView 中上下滚动时,手势应该是直线上下,如果手指稍微向一侧移动而不抬起它,则滚动手势停止并开始打开关闭抽屉的手势。 如果我不使用 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/
最佳答案
我遇到了同样的问题。您必须在滚动时“锁定”抽屉,并在滚动完成时再次解锁。为此,我使用了两件事:
将 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) { } });
为避免在尝试触发“刷新事件”时出现一些问题,您应该实现 spencer 在此链接上建议的变通方法:Issue 69074
关于android - 抽屉中的 SwipeRefreshLayout 手势检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643473/