11

Sto tentando di implementare CollapsingToolbarLayout con NestedScrollView e viene visualizzato TextView all'interno di NestedScrollView nella parte inferiore e non consente lo scorrimento o la compressione della barra degli strumenti. Ho ottenuto questo per funzionare con un RecyclerView ma non NestedScrollView. Quando rimuovo app:layout_behavior="@string/appbar_scrolling_view_behavior, la barra degli strumenti viene compressa ma NestedScrollView non si trova sotto AppBarLayout. Qualche soluzione o suggerimento per risolvere questo problema?CollapsingToolbarLayout e NestedScrollView non funziona

XML

<android.support.design.widget.CoordinatorLayout 
    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:fitsSystemWindows="true"> 

    <android.support.v4.widget.NestedScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:gravity="center" 
       android:text="Hello" 
       android:textColor="#000" 
       android:textSize="16sp"/> 
     </LinearLayout> 
    </android.support.v4.widget.NestedScrollView> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <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"> 

      <ImageView 
       android:id="@+id/backdrop" 
       android:layout_width="match_parent" 
       android:layout_height="134dp" 
       android:background="@color/primary" 
       app:layout_collapseMode="parallax"/> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_collapseMode="pin"/> 
     </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 
</android.support.design.widget.CoordinatorLayout> 

Risultato

enter image description here

+0

Aggiungi 'android: fitsSystemWindows =" true "' in CoordinatorLayout e NestedScrollView. Quindi sposta nestedScrollview sopra AppBarLayout. – Psypher

+0

@ ɥʇᴉɾuɐɹ Ho appena aggiornato la mia risposta con quello che hai chiesto. Ancora lo stesso risultato. –

+0

@ ɥʇᴉɾuɐɹ Se si dispone di un semplice esempio funzionante di questo, pubblicarlo e lo verificherò. –

risposta

0

Ho avuto lo stesso problema e ha scritto fix tipo di rapida per questo. Supponendo che il vostro LinearLayout contenente etichetta "Ciao" è destinata a mContainer e la tua Toolbar è destinato a mToolbar è possibile utilizzare questo:

private void fixNestedScrollViewScrolling() { 
    final int bottomMargin = getScreenHeight() - mContainer.getHeight() - mToolbar.getHeight(); 
    final FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
      mContainer.getLayoutParams()); 
    layoutParams.setMargins(0, 0, 0, bottomMargin); 
    mContainer.setLayoutParams(layoutParams); 
} 

private int getScreenHeight() { 
    final Display display = getWindowManager().getDefaultDisplay(); 
    final Point size = new Point(); 
    display.getSize(size); 
    return size.y; 
} 

Questo metodo correzione viene chiamato in onCreate metodo della mia Activity:

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_single_post); 

    fixNestedScrollViewScrolling(); 

    // some other stuff here ... 
}