Biblioteca de diseño de Android: SwipeRefreshLayout no detecta el desplazamiento sobre CollapsingToolbarLayout

En mi aplicación estoy usando CollapsingToolbarLayout después de NestedScrollView dentro de SwipeRefreshLayout . Lo que quiero de SwipeRefreshLayout es detectar swipe más de CollapsingToolbarLayout , pero su detección a partir de NestedScrollView e ignorar el golpe en CollapsingToolbarLayout . Aquí está mi XML:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.CoordinatorLayout android:id="@+id/rootLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <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" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <android.support.design.widget.AppBarLayout android:id="@+id/appBarLayout" android:layout_width="match_parent" android:layout_height="256dp" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsingToolbarLayout" android:layout_width="match_parent" android:layout_height="match_parent" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginStart="@dimen/expanded_toolbar_title_margin_start" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:id="@+id/profilePic" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:src="@drawable/ic_split_big_profile" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.7" /> <include android:id="@+id/toolbar_layout" layout="@layout/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:layout_scrollFlags="scroll|enterAlways" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/transactions_scroll" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="500dp"> </RelativeLayout> </android.support.v4.widget.NestedScrollView> <android.support.design.widget.FloatingActionButton android:id="@+id/add_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:layout_marginBottom="@dimen/fab_margin_bottom" android:layout_marginRight="@dimen/fab_margin_right" android:onClick="addTxn" android:src="@drawable/ic_action_add_transaction_light" app:elevation="6dp" app:fabSize="normal" /> </android.support.v4.widget.SwipeRefreshLayout> </android.support.design.widget.CoordinatorLayout> </RelativeLayout> 

¿Alguien ha usado este tipo de cosas?

Como se indica en Documentos de AppBarLayout , tiene que ser hijo directo de CoordinatorLayout

Esta vista depende en gran medida de ser utilizado como un niño directo dentro de un CoordinatorLayout. Si utiliza AppBarLayout dentro de un grupo de vistas diferente, la mayoría de su funcionalidad no funcionará.

Por lo tanto, no estoy seguro de dónde el SwipeToRefreshLayout tiene que ser incluido para trabajar junto con el CollapsingToolbar, como NestedScrollView tiene que ser hijo directo también.

Aquí hay otra respuesta que ayuda a adjuntar el SwipeRefreshLayout y activarlo sólo cuando el appBar es uncollapsed, pero no están usando un NestedScrollView, que no funciona para mí 🙁


EDITO Encontré una solución para mi problema: El ListView que utilicé, tenía que ser configurado como desplazamiento anidado en lugar de ponerlo dentro de un NestedScrollView, o reemplazarlo con RecycleView:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { listView.setNestedScrollingEnabled(true); } 

Por lo tanto, una solución para su problema debe ser para envolver el NestedScrollView dentro de la SwipeRefreshLayout.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.