10

Niedawno skorzystałem z biblioteki pomocy technicznej Android Design i mam następujący kod dla mojego zwijanego paska narzędzi.CoordinatorLayout nie działa dobrze z NestedScrollView i viewpager

<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.support.design.widget.AppBarLayout 
     android:id="@+id/media_detail_appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     > 

     <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" 
      app:contentScrim="?attr/colorPrimary" 
      > 

      <include 
       layout="@layout/layout_card" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       /> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/media_detail_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> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     > 

     <android.support.design.widget.TabLayout 
      android:id="@+id/media_detail_tabs" 
      android:layout_width="match_parent" 
      android:layout_height="?android:attr/actionBarSize" 
      android:background="@color/blue_2" 
      app:tabMode="scrollable" 
      /> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/view_pager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      /> 

    </LinearLayout> 

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

Mam dwa fragmenty dla View Pager. Jednym z nich jest NestedScrollView, a drugim jest widok Recycler. Mój problem to NestedScrollView, oto kod poniżej.

<android.support.v4.widget.NestedScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     > 
    </LinearLayout> 
</android.support.v4.widget.NestedScrollView> 

Mój problem jest, że kiedy przewijać widok w górę, tak szybko, jak palec przesuwa się nieco w bok, to wyzwala poziomego przewijania dla widoku pager. Czy możesz mi pomóc, aby tego uniknąć? Kiedy przewijamy w górę iw dół, pager widoku nie powinien być uruchamiany. Działa dobrze w moim fragmencie widoku recyklingu. Dzięki.

+0

Czy znalazłeś jakieś rozwiązanie dla tego problemu? – dgngulcan

Odpowiedz

1

Próbowałem sam układ z najnowszej wersji tych bibliotek

compile 'com.android.support:appcompat-v7:23.1.1' 
compile 'com.android.support:design:23.1.1' 

i to działa dobrze jak oczekiwano, czyli:

jeśli gest jest głównie przewijania pionowego (nawet po przekątnej) NestedScrollView wyzwala przewijanie, w przeciwnym razie, jeśli gest jest głównie przesunięcie poziome (nawet przy minimalnej odległości pionowej) ViewPager uruchamia przesunięcie palcem. Aby rozwiązać problem aktualizacji bibliotek.

+0

Mimo że korzystam z bibliotek obsługujących 23.1.1, podczas przesuwania przesuwa się pionowo na 0,5 sekundy, a następnie przesuwa się w poziomie. Zmienia oś, przesuwając nieruchomo – dgngulcan

Powiązane problemy