如何将 CoordinatorLayout 内容滚动到顶部?

Posted

技术标签:

【中文标题】如何将 CoordinatorLayout 内容滚动到顶部?【英文标题】:How to scroll CoordinatorLayout's content to the top? 【发布时间】:2019-03-15 05:26:46 【问题描述】:

ViewPager 有两个Fragments,一个Fragment 的布局包含一个NestedScrollView,另一个的布局包含一个RecyclerView,当我将NestedScrollView 滚动到底部时,这是一个要求用户单击整个标题区域所有 CoordinatorLayout 的内容必须滚动到顶部与开头相同。但我不知道如何使用CoordinatorLayout。好像没有支持我需求的api方法。

这是我的布局 xml:

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/coordinate_layout"
    android:layout_
    android:layout_>

    <android.support.design.widget.AppBarLayout
        android:fitsSystemWindows="true"
        android:background="?attr/color_26"
        android:layout_
        android:layout_>

        <android.support.design.widget.CollapsingToolbarLayout
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            android:layout_
            android:layout_>


            <android.support.v7.widget.Toolbar
                app:contentInsetLeft="0dp"
                app:contentInsetStart="0dp"
                app:layout_collapseMode="pin"
                android:layout_
                android:layout_>

            </android.support.v7.widget.Toolbar>


        </android.support.design.widget.CollapsingToolbarLayout>

        <android.support.design.widget.TabLayout

            app:tabTextColor="?attr/color_8"
            app:tabSelectedTextColor="?attr/color_18"
            app:tabIndicatorHeight="0dp"
            app:tabGravity="fill"
            app:tabMode="fixed"
            android:layout_
            android:layout_>

        </android.support.design.widget.TabLayout>

    </android.support.design.widget.AppBarLayout>


    <android.support.v4.view.ViewPager
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:id="@+id/view_pager"
            android:layout_
            android:layout_> 
    </android.support.v4.view.ViewPager>

 </android.support.design.widget.CoordinatorLayout>

【问题讨论】:

【参考方案1】:

当我将NestedScrollView 滚动到底部时,这是一个需求 该用户单击整个标题区域全部 CoordinatorLayout 的 内容必须滚动到与开头相同的顶部。但我不知道怎么做 用CoordinatorLayout做到这一点

当用户单击整个标题区域时,您可以处理该问题(也许单击自定义 ToolbarTextView),重新加载刷新 Activity

finish();
startActivity(getIntent());

这将使内容像开头一样从顶部开始。

或者,试试这个:

findViewById(R.id.recycler_view).setFocusable(false);
findViewById(R.id.temp).requestFocus();

检查这个答案:https://***.com/a/33584361/4409113

但是,您不需要CollapsingToolbarLayout,因为您只有TabLayoutToolbar,并且其中没有ImageView 或视差视图。

【讨论】:

工具栏必须贴在顶部 检查更新的答案。希望这正是您正在寻找的。​​span> 我认为重启 Activity 是性能、用户体验和 Android 设计最糟糕的可能性之一。

以上是关于如何将 CoordinatorLayout 内容滚动到顶部?的主要内容,如果未能解决你的问题,请参考以下文章

如何在折叠布局下的 CoordinatorLayout 中正确对齐元素?

CoordinatorLayout + AppBarLayout + NavigationDrawer

如何隐藏 CoordinatorLayout 的一些视图

在片段中使用 CoordinatorLayout 时如何使状态栏透明

将应用栏滚动视图行为添加到 CoordinatorLayout 中的多个视图

如何在 CoordinatorLayout 中禁用 AppBarLayout 的滚动?