6

Oto mój setup, Używam DrawerLayout w terminie to CoordinatorLayout zawierający AppBarLayout i nestedscrollview. Staram się, aby zagnieżdżony widok przewinął normalnie, a pasek narzędzi, aby się ukrył podczas przewijania w dół i reppear przy przewijaniu w górę. Dołączony jest mój kod XML. Byłbym wdzięczny za wszelką pomoc .. przeczytałem wszystkie powiązane pytania i wdrożyłem ich odpowiedzi bez żadnego sukcesu.CoordinatorLayout nie ukrywa pasek na przewijanie pomimo wykonania wszystkich wymaganych parametrów

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

<android.support.design.widget.CoordinatorLayout 
    android:id="@+id/admincoordinator" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appBarLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <include 
      android:id="@+id/app_bar" 
      layout="@layout/app_bar" 
      app:layout_scrollFlags="scroll|enterAlways" /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 
    </android.support.design.widget.AppBarLayout> 

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

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

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_drawer" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    app:headerLayout="@layout/drawer_header" 
    app:menu="@menu/menu_drawer" /> 

+0

Dla mnie również ten sam problem, zdarzenia przewijania są w ogóle nie działa. dostałeś odpowiedź na to? – Naruto

+0

to samo tutaj. To jest dziwne – ThanosFisherman

+0

@All Anyone znaleźć rozwiązanie dla tego. Poważnie łamie mi głowę. –

Odpowiedz

1

myślę wykorzystanie nowej CollapsingToolbarLayout pomoże ... Krótki opis od jakiegoś very useful exploration of the new Android Design Support Library pokazuje jak owinąć pasek w CollapsingToolbarLayout i dostosować efekty poprzez ustawienie layout_collapseMode.

aktualizacja

myślę dodanie onScrollListener do ListView i pokazywanie/ukrywanie paska narzędzi jak ten przykład z this answer:

getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 

listView.setOnScrollListener(new OnScrollListener() { 
    int mLastFirstVisibleItem = 0; 

    @Override 
    public void onScrollStateChanged(AbsListView view, int scrollState) { }   

    @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 

     if (view.getId() == listView.getId()) { 
      final int currentFirstVisibleItem = listView.getFirstVisiblePosition(); 

      if (currentFirstVisibleItem > mLastFirstVisibleItem) { 
       getSupportActionBar().hide(); 
      } else if (currentFirstVisibleItem < mLastFirstVisibleItem) { 
       getSupportActionBar().show(); 
      } 

      mLastFirstVisibleItem = currentFirstVisibleItem; 
     }    
    } 
}); 
+0

nie jest zwiniętym układem paska narzędzi dla przypadku, gdy masz duży (dodatkowy?) Pasek narzędzi, który jest przywracany do normalnego rozmiaru podczas przewijania, co chcę osiągnąć, to po prostu ukryć normalny rozmiar paska narzędzi podczas przewijania ... to sprawiło, że moje pytanie było jasne :) –

4

miałem ten sam problem na tydzień i próbowałem prawie wszystko, aby go rozwiązać. Jednak udało mi się rozwiązać problem.

Jeżeli masz coś jak ...

<include 
    android:id="@+id/app_bar" 
    layout="@layout/app_bar" 
    app:layout_scrollFlags="scroll|enterAlways" /> 

... zastąpić to z tym, co jest w układzie app_bar.xml. Na przykład:

<android.support.v7.widget.Toolbar 
    android:id="@+id/main_toolbar" 
    style="@style/AppTheme.Toolbar" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    app:layout_scrollFlags="scroll|enterAlways"/> 

Wydaje się, że z jakiegoś powodu, przewijanie CoordinatorLayout nie działa podczas korzystania z <include> tag.

+0

Nienawidzę tak bardzo, że to wszystko, czego potrzebowałem przez cały ten czas !! XD Dziękujemy! – leenephi

1

Jak już powiedziałeś @Farbod Salamat-Zadeh: CoordinatorLayout nie działa podczas używania znacznika <include>.
Ale można użyć <include> ten sposób:

<include 
    android:id="@+id/app_bar" 
    layout="@layout/app_bar" /> 

Parametr app:layout_scrollFlags="scroll|enterAlways" tylko powinien być przeniesiony do swojej app_bar.xml jeżeli dopuszczalny dla Ciebie