【问题标题】:How to disable pullToRefreshScrollView from listening to touch如何从收听触摸中禁用 pull To Refresh ScrollView
【发布时间】:2013-09-09 11:38:35
【问题描述】:

我正在使用 Chris Banes 提供的 pullToRefreshLibrary。我有 gridView ,其中包含整个数据列表。我尝试了 pullToRefreshGridViewActivity 但它太慢了所以我试图在我的 gridView 上使用 pullToRefreshScrollViewActivity 来处理它。问题是当我这样做时,scrollView 正在处理所有触摸事件,我无法在 gridView 上滑动。我需要锁定它并将触摸传递给gridView。 这是我的 xml:

<com.handmark.pulltorefresh.library.PullToRefreshScrollView
        xmlns:ptr="http://schemas.android.com/apk/res-auto"
        android:id="@+id/pull_refresh_scrollview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        ptr:ptrAnimationStyle="flip" >

        <com.asd.android.dda.ui.controls.ExpandableGridView
            android:id="@+id/gridview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clipToPadding="false"
            android:drawSelectorOnTop="true"
            android:fadingEdge="none"
            android:gravity="top"
            android:horizontalSpacing="@dimen/image_grid_hspacing"
            android:listSelector="@drawable/selector_shadow"
            android:numColumns="@integer/grid_num_cols"
            android:paddingBottom="50dp"
            android:scrollbarAlwaysDrawVerticalTrack="false"
            android:scrollbars="none"
            android:scrollingCache="true"
            android:smoothScrollbar="false"
            android:stretchMode="columnWidth"
            android:verticalSpacing="@dimen/image_grid_vspacing"
            android:visibility="visible" />
    </com.handmark.pulltorefresh.library.PullToRefreshScrollView>

我尝试使用以下方式锁定滚动视图:

mScrollView.requestDisallowInterceptTouchEvent(true);
gridView.requestDisallowInterceptTouchEvent(true);

mScrollView.setOnTouchListener(new OnTouchListener(){ 
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return false; 
    }
});
mScrollView.setOnTouchListener(null);

但这些都不起作用。而且我不能在这里使用自定义 ScrollView 来覆盖 onInterceptTouchEvent。

【问题讨论】:

  • 定义“太慢”。这听起来很奇怪,因为它几乎应该是为这种用途而制造的
  • 这是一个非常大的包含图像的数据库,连续两个和非常大的列表。我已经将它与 GridView 的 pull-to-refresh 实现进行了比较,它明显更慢。它可能是在 GridView 样式中进行的修改。这就是为什么我想使用 ScrollView,我只想在用户位于 GridView 之上时才打开触摸。
  • 这个库似乎依赖于将网格视图放在线性布局中的框架布局中,原因有多种,我不太明白。我想说拉刷新网格视图可能很简单:当网格顶部已经显示时检测垂直拖动手势。
  • 那很奇怪,它会减慢滚动速度。我们在两个相同的 Sgs2 上检查了这一点,不幸的是存在差异。

标签: android scrollview pull-to-refresh


【解决方案1】:

您可以使用的一个技巧是打开库,进入PullToRefreshBase.java 并从onInterceptTouchEvent 等方法中删除final。然后,您可以使用自定义 ScrollView。

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2013-01-14
    • 2015-08-07
    • 1970-01-01
    相关资源
    最近更新 更多