11

Próbuję wdrożyć CollapsingToolbarLayout z NestedScrollView i wyświetla widok TextView w NestedScrollView na dole i nie zezwalając, przewijając lub zwijając pasek narzędzi. Dostałem to do pracy z RecyclerView, ale nie NestedScrollView. Po usunięciu app:layout_behavior="@string/appbar_scrolling_view_behavior pasek narzędzi zwinął się, ale widok NestedScrollView nie był poniżej elementu AppBarLayout. Wszelkie rozwiązania lub sugestie, aby to naprawić?CollapsingToolbarLayout and NestedScrollView nie działa

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> 

Wynik

enter image description here

+0

Dodaj 'android: fitsSystemWindows =" true "' w CoordinatorLayout i NestedScrollView. Następnie przenieś zagnieżdżony widok Scroll powyżej AppBarLayout. – Psypher

+0

@ ɥʇᴉɾuɐɹ Właśnie zaktualizowałem moją odpowiedź z tym, o co prosiłeś. Wciąż ten sam wynik. –

+0

@ ɥʇᴉɾuɐɹ Jeśli masz prosty przykład tego działania, opublikuj go, a ja go przetestuję. –

Odpowiedz

0

miałem ten sam problem i napisał rodzaju szybko naprawić to. Zakładając, że LinearLayout zawierające „Hello” etykieta jest związana mContainer i twój Toolbar jest zobowiązany do mToolbar można użyć to:

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; 
} 

Metoda ta poprawka jest nazywany w onCreate sposobie mojego Activity:

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

    fixNestedScrollViewScrolling(); 

    // some other stuff here ... 
} 
Powiązane problemy