Подтвердить что ты не робот

КоординаторLayout не работает с NestedScrollView и viewpager

Недавно я использовал библиотеку поддержки Android Design, и у меня есть следующий код для моей сворачивающейся панели инструментов.

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

У меня есть два фрагмента для View Pager. Один из них - NestedScrollView, а другой - Recycler View. Моя проблема - это NestedScrollView, вот код ниже.

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

Моя проблема заключается в том, что когда вы просматриваете представление вверх, как только ваш палец немного движется сбоку, он запускает горизонтальную прокрутку для пейджера представления. Не могли бы вы помочь мне избежать этого? Когда мы прокручиваем вверх и вниз, пейджер представления не должен запускаться. Он хорошо работает в моем фрагменте просмотра recycler. Спасибо.

4b9b3361

Ответ 1

Я пробовал такой же макет с последней версией этих библиотек

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

и он работает хорошо, как ожидалось, то есть:

если жест в основном вертикальный прокрутки (даже диагональный) NestedScrollView запускает прокрутку, иначе, если жест главным образом горизонтальный промах (даже с минимальным вертикальным разрывом) ViewPager вызывает салфетки. Чтобы решить обновление ваших библиотек.