12

Sto tentando di implementare il pedaggio collasso con lo scorrimento per aggiornare e riciclabilità. Quando sto provando a scorrere (quando ricicla la vista ha un solo elemento) la compressione barra degli strumenti, ma quando sto provando a scorrere verso il basso per mostrare la barra degli strumenti, è impossibile perché lo scorrimento verso il basso fa scorrere il dito sullo schermo. Quando recyclerview ha più oggetti funziona perfettamente.Barra degli strumenti non visualizzata con lo scorrimento per aggiornare

Qualcuno può aiutarmi?

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

Possibile duplicato di [Android: CollapsingToolbarLayout e SwipeRefreshLayout rimanere bloccati] (http://stackoverflow.com/questions/30779667/android-collapsingtoolbarlayout-and-swiperefreshlayout-get-stuck) –

+1

[Questo è stato corretto in Libreria di supporto v23.1.1 senza soluzioni alternative] (http://stackoverflow.com/a/33776549/383414) –

risposta

14

Aggiornamento: Questo bug è stato corretto nella versione 23.1.1 di libreria di supporto

È possibile impostare ascoltatore onOffsetChanged per il vostro AppBarLayout ed evitare di strisciare aggiornamento fino all'offset del layout AppBarLayout 0.

Questo è andare od esempio: https://gist.github.com/blackcj/001a90c7775765ad5212

+0

funziona Grazie. –

+0

Nota che questo errore è stato corretto in una versione recente della libreria di supporto (23.1.1 IIRC). –

+1

Sto affrontando anche in '22.2.0' –

0

sono riuscito aggiungendo la seguente implementazione di OnOffsetChangedListener nel frammento:

@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); 
} 
Problemi correlati