NavigationDrawer和ViewPager之间的手势冲突

时间:2015-01-21 10:33:06

标签: android android-fragments android-viewpager navigation-drawer

我有一个NavigationDrawerActivity,其布局如下:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_drawerlayout"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/drawer_framelayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ListView
        android:id="@+id/drawer_listview"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@color/transparent"
        android:dividerHeight="0dp"
        android:background="@color/navigationDrawerBackgroundColor" />

</android.support.v4.widget.DrawerLayout>

FrameLayoutFragment替换为NavigationDrawer ListView中当前所选项目。

显示效果很好,NavigationDrawer效果很好,但当Fragment包含带有指标的ViewPager时,例如:

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

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1.0" />

    <me.shkschneider.skeleton.ui.viewpager.ViewPagerCircleIndicator
        android:id="@+id/viewpagercircleindicator"
        android:layout_width="match_parent"
        android:layout_height="@dimen/spaceSmallish" />

</LinearLayout>

当我尝试向后(向左)滑动时(大多数情况下)我得到了奇怪的行为:View里面的ViewPager幻灯片就像距离的一半,然后重置到它的位置,很难刷到上一个Fragment

我注意到只有当我的手指的起点位于屏幕左侧(NavigationDrawer所在的位置)时才会发生这种情况,但我看不到任何NavigationDrawer运动。< / p>

这发生在运行Android 5.0.1的Nexus 5和运行Android 4.4.4的Moto X上。

  1. 两个UI元素是否真正兼容?
  2. 我错过了Listener或其他什么来阻止这种行为/如何避免这种行为?

1 个答案:

答案 0 :(得分:-1)

我使用Android设计库实现了这一点,现在这个问题已经消失了。

https://developer.android.com/training/implementing-navigation/nav-drawer.html