android - 抽屉中的 SwipeRefreshLayout 手势检测

标签 android navigation-drawer gesture-recognition

我在抽屉中使用 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/

最佳答案

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

  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

关于android - 抽屉中的 SwipeRefreshLayout 手势检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643473/

相关文章:

android - 无法访问 Context.USAGE_STATS_SERVICE

android - Google登录:通过播放服务获取用户信息

java - 如何在 Java KeyStore 中加载多个 SSL 证书?

android - setOnDismissListener 我能知道我在 android 中点击了哪个按钮吗

c# - 识别 ARM 是否正在向 Kinect 传感器摆动/移动或远离它

computer-vision - 人体 Action 识别和人体事件识别有什么区别?

android - 如何在android中创建自定义抽屉导航

android - 抽屉导航在单击菜单项时不会切换 fragment

android - 处理自定义列表项在抽屉导航 ListView 内单击

c++ - Android C++ 手势代码