首先设置RecyclerView Scroll,然后在CoordinatorLayout中设置viewpager滑动

时间:2015-12-31 01:03:53

标签: android-viewpager android-coordinatorlayout android-appbarlayout

我对典型的CoordinatorLayout + AppBarLayout + Toolbar + TabLayout + Viewpager有一个非常烦人的问题,其中工具栏的layout_scrollFlags带有“scroll | enterAlways | snap”

这里是xml,它还有一个带有NavigationView的DrawerLayout:

<?xml version="1.0" encoding="utf-8"?>
<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/activity_tabs_main_drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

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

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

            <android.support.v7.widget.Toolbar
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:id="@+id/material_toolbar"
                style="@style/AppCompatTheme.Toolbar"
                app:layout_scrollFlags="scroll|enterAlways|snap"
                app:popupTheme="@style/material_toolbar_popup"/>

            <android.support.design.widget.TabLayout
                android:id="@+id/activity_tabs_main_tab_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:tabIndicatorColor="@color/neon_green"/>
        </android.support.design.widget.AppBarLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/activity_tabs_main_viewpager"
            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/navigation_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:menu="@menu/drawer_item"/>

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

我注意到的真正的两个问题是,我可以在Google Play应用中以对角线方式在viewpager中滑动选项卡(参见附图),如果我尝试使用Diagonal滑动RecyclerView,则可以使用Chris Bane的Whatsapp或Cheesesquare首先采取手势并向下/向上滚动。

ViewPager Toolbar Bounce bugs

我认为这个ViewPager的行为会让工具栏在Toolbat标题旁边设置导航器抽屉图标时创建一点反弹。

所以真正的问题是试图阻止这个Bounce问题或bug,你也可以查看这个视频

Youtube链接:Video to show the bounce effect in the Toolbar

我已经尝试删除DrawerLayout和NavigationView但没有效果,反弹问题仍在继续。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我想我找到了解决这个问题的方法。在set.seed(1) b<-sample(10) b #[1] 3 4 5 7 2 8 9 6 10 1 (b==1)*2+(b==2)+b*(!b %in% 1:2) #[1] 3 4 5 7 1 8 9 6 10 2 内添加View.OnClickListener()之后几乎察觉不到,可能吗?

以下是RecyclerView.ViewHolder

中的代码
RecyclerView:

其中 private RecyclerOnItemClickListener itemClickListener; class PostDtoViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { private final PostView postView; public PostDtoViewHolder(PostView postView) { super(postView); this.postView = postView; this.postView.setOnClickListener(this); } public View getViewHolder() { return this.postView; } public void bind(PostDto postDto) { postView.loadContent(postDto); } @Override public void onClick(View v) { itemClickListener.onItemClickListener(getAdapterPosition()); } } 只是该方法的接口:

RecyclerOnItemClickListener