17

Usando:Prevenire CollapsingToolbarLayout collasso se non necessario

compile 'com.android.support:design:23.0.0' 
compile 'com.android.support:appcompat-v7:23.0.0' 
compile 'com.android.support:cardview-v7:23.0.0' 
compile 'com.android.support:recyclerview-v7:23.0.0' 

Con il progetto Cheesesquare aggiornato.

Nel dettaglio del formaggio, rimuovo 2 carte (per avere solo una). C'è un modo per prevenire il collasso della barra degli strumenti che mostra uno spazio vuoto?

enter image description here

+1

Non ho davvero trovare una soluzione, ma ora sto usando https://github.com/ henrytao-me/smooth-app-bar-layout e non ho questo problema (dal momento che l'implementazione è diversa) – stankocken

risposta

18

Per attuare tale comportamento in Cheesesquare esempio sufficiente modificare android:layout_height param del NestedScrollView a wrap_content. Impedirà lo scorrimento per contenuto se è abbastanza piccolo da adattarsi allo schermo.

E per evitare lo scorrimento tramite CollapsingToolbarLayout è necessario impostare a livello di programmazione il parametro layout_scrollFlags sul valore AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP.

Here ha descritto come è possibile farlo.

+0

Oppure in xml aggiungi '' app: layout_scrollFlags = "snap" '' al tag CollapsingToolbarLayout – tieorange

+0

quindi scrollview annidato è buono ma la barra degli strumenti di compressione è ancora scorrevole – Sheychan

+0

layout_scrollFlags non funziona. utilizzare questa soluzione alternativa per disabilitare lo scorrimento di CollapsingToolbarLayout. https://stackoverflow.com/a/40750707/3094065 è vero e funziona davvero!) – maXp

1

in XML ho usato proprietà

app:layout_scrollFlags="snap" in <android.support.design.widget.CollapsingToolbarLayout

e seguendo nell'attività

toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 
toolbar.setTitle(null); 
toolbar.setCollapsible(false); 

Si sta lavorando ora.

1

Ecco il mio codice di lavoro, per un primo collapes la barra:

_appbar.setExpanded (false);

AppBarLayout _appbar = (AppBarLayout) findViewById(R.id.appbar); 
    _appbar.setExpanded(false); 

Ecco l'XML di layout

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/detail_backdrop_height" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:expandedTitleMarginStart="48dp" 
     app:expandedTitleMarginEnd="64dp"> 



     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 

      app:layout_collapseMode="pin" /> 





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

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

il riferimento è: AppBarLayout.setExpanded(boolean)