12

Ich versuche kollabierende Tollbar mit Swipe zu aktualisieren und Recyclerview zu implementieren. Wenn ich versuche, einen Bildlauf durchzuführen (wenn Recyclerview nur ein Element enthält), verkleinere die Symbolleiste , aber wenn ich versuche, nach unten zur Symbolleiste zu scrollen, ist das unmöglich, weil der Finger nach unten wischt, um zu aktualisieren. Wenn RecyclerView mehr Artikel hat, funktioniert es perfekt.Toolbar nicht mit Swipe zum Aktualisieren angezeigt

Kann mir jemand helfen?

Link to gif with problem

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/main_content" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:elevation="1dp" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     android:elevation="1dp" 
     android:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
     app:layout_scrollFlags="scroll|enterAlways" /> 


</android.support.design.widget.AppBarLayout> 

    <android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/activity_main_swipe_refresh_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 


     <android.support.v7.widget.RecyclerView 
      android:id="@+id/cities_list" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

     </android.support.v7.widget.RecyclerView> 

    </android.support.v4.widget.SwipeRefreshLayout> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="end|bottom" 
    android:layout_margin="16dp" 
    android:elevation="1dp" 
    android:onClick="addCity" 
    android:src="@drawable/ic_plus_white_36dp" 
    app:borderWidth="0dp" /> 

+0

Mögliches Duplikat [Android: CollapsingToolbarLayout und SwipeRefreshLayout stecken] (http://stackoverflow.com/questions/30779667/android-collapsingtoolbarlayout-and-swiperefreshlayout-get-stecken) –

+1

[Dies wurde jetzt in der Support-Bibliothek v23.1.1 ohne Umgehungslösungen behoben] (http://stackoverflow.com/a/33776549/383414) –

Antwort

14

aktualisieren: Dieser Fehler wurde in der Version 23.1.1 von Support-Bibliothek wurde

Fest

Sie onOffsetChanged Zuhörer für Ihre AppBarLayout einstellen können und verhindern, swipe Aktualisieren bis AppBarLayout Layout-Offset 0.

Dies ist go od Beispiel: https://gist.github.com/blackcj/001a90c7775765ad5212

+0

es funktioniert Vielen Dank. –

+0

Beachten Sie, dass dieser Fehler seither in einer aktuellen Version der Support-Bibliothek behoben wurde (23.1.1 IIRC). –

+1

Ich bin auch in "22.2.0" konfrontiert –

0

Ich schaffte es durch die folgende Implementierung von OnOffsetChangedListener in Fragmente Zugabe:

@Override 
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { 
    if (collapsingToolbarLayout.getHeight() + verticalOffset < 2 * ViewCompat.getMinimumHeight(collapsingToolbarLayout)) { 
     swipeRefreshLayout.setEnabled(false); 
    } else { 
     swipeRefreshLayout.setEnabled(true); 
    } 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    appBarLayout.addOnOffsetChangedListener(this); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    appBarLayout.removeOnOffsetChangedListener(this); 
} 
Verwandte Themen