bubbleinpit
bubbleinpit
2017-05-29 13:46

Fragment中的上下滑动事件会被上一个Fragment响应而不是当前的,怎么办

20
  • fragment
  • 布局
  • android
  • viewpager
  • 滑动事件

我当前开发一个安卓app,只有一个activity,布局文件是中有一个ViewPager,其适配器绑了三个Fragment。前两个Fragment的布局文件都是最外层SwipeRefreshLayout用于下拉刷新,然后嵌套一个ScrollView,第三个也准备这么弄但是发现问题。**当我进入app默认显示第一个Fragment时,上下滑动屏幕是有滑动效果的,然而切换到第二个Fragment滑动就没效果。接着我发现,当我在第二个Fragment中滑动后,再切换回第一个Fragment,发现反而是第一个Fragment界面响应了我的滑动操作。于是我尝试切换到第三个Fragment,滑动后迅速切换到第二个Fragment,果然其界面正在**滑动。
我并不知道这个原因到底是什么,但我试了一个办法:**通过重载setUserVisibleHint(),一旦离开一个Fragment,直接把整个Fragment设成Invisible,以这种方式,的确实现了滑动操作被当前Fragment响应。**但我还是弄不懂之前为什么会有那样的情况——**在第一个和第二个Fragment中滑动屏幕,都是第一个Fragment响应,在第三个Fragment中滑动屏幕,则是第二个Fragment响应滑动操作。**
我想知道,究竟出了什么问题,是什么原因导致的,我怎么才能解决(不通过设置Visibility的方法强行实现)?
Fragment布局文件代码(只给出一个,另一个类似):

 <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/swipe_article_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ScrollView
        android:id="@+id/scroll_article_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:descendantFocusability="blocksDescendants">
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <WebView
        android:id="@+id/articleWebView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:alpha="0"/>
        <ProgressBar
            android:id="@+id/webViewLoading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            style="@style/MyProgressBar"
            android:visibility="gone"/>
    </FrameLayout>
    </ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答

为你推荐

换一换