繁体   English   中英

使用 ViewPager2 折叠工具栏会出现滚动问题

[英]Collapsing Toolbar with ViewPager2 gives scrolling issues

所以我遇到了这个奇怪的问题,它只发生在我一直试图解决的 ViewPager2 上,但以前从未见过这样的报告。

我正在尝试将 ViewPager2 与 ToolBar 进行协调,以使其在用户滚动其中的内容时隐藏。 当加载带有填充 RecyclerView 的片段时它工作正常,但当回收器为空或根本没有片段时表现得很奇怪。

这里有一些 gif 来显示问题(第一个 ViewPager2(错误),第二个 ViewPager(正确))。

正如您在第一张图片中看到的,只有当我选择工具栏时它才能正常工作,但是每当我抓住 NestedScrollView 所在的空白空间时都会出现拖动问题。

ViewPager2 的 Gif ViewPager 的 Gif

这是 ViewPager2 的 xml 布局:

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".MainActivity">

<com.google.android.material.appbar.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolBar"
        style="@style/Widget.MaterialComponents.Toolbar"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        app:layout_scrollFlags="scroll|enterAlways"/>

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@style/Widget.MaterialComponents.TabLayout.Colored" >

        <com.google.android.material.tabs.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Test" />

    </com.google.android.material.tabs.TabLayout>

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

<androidx.core.widget.NestedScrollView
    android:id="@+id/scrollView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</androidx.core.widget.NestedScrollView>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

经过很多时间,我终于通过删除 NestedScrollView 并将其替换为实际的 ViewPager2 来解决它。 请记住始终设置一个片段,否则工具栏将不会滚动。

这是 ViewPager2:

<androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

编辑:如果您仍然需要使用 NestedScrollView 将它放在片段中,它将按预期运行。

使用 ViewPager 而不是 ViewPager2。 因为自定义 viewpager 在它外面的每个滚动中都会产生问题。 像折叠工具栏,切换标签等。

无法仅添加评论但想重申正确的解决方案是回退到使用 ViewPager 而不是 ViewPager2。

我有一个带有 NavigationDrawer 和扩展操作栏的活动。 UI 从显示一个 MasterFragment 开始,它提供了自引用向下钻取。 在某些时候,当您单击具有实际内容的 master 中的项目时,我会显示另一个片段。 单击此片段会显示一个 3 选项卡视图,其中两个选项卡是 WebView。 WebView 中的垂直滚动严重损坏,并且总是不经意间将您切换到另一个选项卡。 切换回 ViewPager 完全解决了这些问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM