多层tablayout+ViewPager,NestedScrollView+ViewPager+RecyclerView,嵌套吸顶滑动冲突

先看实现的UI效果
在这里插入图片描述

其实就是仿BOSS的页面效果,第二层tab下的viewpager滑到最右边再右滑,就操作第一层viewpager滑动。页面上滑时把第一层tab和vp里的banner都推出界面,让第二层tab吸顶。

滑上去第二个tab块卡在顶部,如图
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e6b4913ee2484b4c828cdbdd1aae1474.png
我混乱的思路:
之前没有外层tab的需求,直接用CoordinatorLayout的一套放在布局文件里做吸顶就行了。
现在是把CoordinatorLayout挪到第一层用(用scrollView嵌套也行,但是也要处理滑动冲突,以及第一层viewpager卡在界面上才行,感觉更麻烦)

    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:id="@+id/coordinator"
        style="forn"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.material.appbar.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/transparent"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

            <com.google.android.material.appbar.CollapsingToolbarLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layout_scrollFlags="scroll|exitUntilCollapsed"
                app:titleEnabled="false">

                <com.google.android.material.tabs.TabLayout
                    android:id="@+id/tab_layout"
                    android:layout_width="match_parent"
                    android:layout_height="@dimen/dp_44"
                    app:tabIndicator="@drawable/indicator_tab" />
            </com.google.android.material.appbar.CollapsingToolbarLayout>

        </com.google.android.material.appbar.AppBarLayout>

        <androidx.appcompat.widget.LinearLayoutCompat
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">

            <ViewPager
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
        </androidx.appcompat.widget.LinearLayoutCompat>
    </androidx.coordinatorlayout.widget.CoordinatorLayout>

这样外层页面上滑时只会推出第一层tab,第一层viewpager都会卡在屏幕里,至于banner,在第二层页面里处理。

第二层页面用NestedScrollView嵌套了viewpager,放了一个第二层的假tabLayout在第二层vp顶部,计算banner滑出页面时,也就是真tab滑到顶部时,显示假tab,做吸顶效果。
我这里的NestedScrollView外面还套了一层SmartRefreshLayout,因为这个页面还有整体刷新功能。
第二层fragment中代码如下:

不行我要下班了 今天先写到这

相关推荐

  1. css(position: sticky;)

    2024-06-13 19:58:03       91 阅读
  2. EditText与NestScrollView嵌套使用时,滑动冲突处理

    2024-06-13 19:58:03       40 阅读
  3. Python scapy 构建嵌套数据包

    2024-06-13 19:58:03       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 19:58:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 19:58:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 19:58:03       82 阅读
  4. Python语言-面向对象

    2024-06-13 19:58:03       91 阅读

热门阅读

  1. Android中蓝牙设备的状态值管理

    2024-06-13 19:58:03       26 阅读
  2. CSPM-3考试成绩已出!内附查询流程

    2024-06-13 19:58:03       33 阅读
  3. 缺陷 & 规避

    2024-06-13 19:58:03       31 阅读
  4. C++中变量的使用细节和命名方案

    2024-06-13 19:58:03       31 阅读
  5. MYSQL(事务)

    2024-06-13 19:58:03       23 阅读
  6. 国产数据库助力数字中国建设高质量发展

    2024-06-13 19:58:03       31 阅读