当我们的列表滚动到顶部时,如何制作隐藏/显示工具栏

时间:2016-07-25 17:26:25

标签: android scroll toolbar

当我们的列表滚动到顶部时如何制作隐藏/显示工具栏,知道工具栏视图在activity_main.xml中描述,但recyclelerView在另一个fragmet nomed Fragment_main.xml中描述

抱歉我的英语:)

3 个答案:

答案 0 :(得分:1)

由于您的内容视图中包含工具栏的活动正在启动片段,因此您始终可以从片段中获取它。

MainActivity mainActivity = (MainActivity)getActivity();

我建议在MainActivity中为它做一个方法:

public void showToolbar(boolean show) {

    // If you have your toolbar as a private member of MainActivity
    toolbar.setVisiblity(show ? View.VISIBLE : View.GONE);

    // But you can also do this
    if (show) {
        getSupportActionBar().show();
    }
    else {
        getSupportActionBar().hide();
    }
}

然后当你真的想要从片段中隐藏它时,请将其命名为:

((MainActivity)getActivity()).showToolbar(false);

为了让UI更改更流畅,我建议您翻译它而不是立即隐藏它。看看最佳答案,获取灵感:

android lollipop toolbar: how to hide/show the toolbar while scrolling?

如果您不知道如何通过滚动逻辑来实际显示或隐藏它,请查看此库,它可以为您处理很多,并提供示例:

https://github.com/ksoichiro/Android-ObservableScrollView

答案 1 :(得分:0)

这很简单。 只需将此代码放在工具栏中

即可
 <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_scrollFlags="scroll|enterAlways"/>

这将实现神奇:app:layout_scrollFlags="scroll|enterAlways"

请记得在您的xml中添加应用调用xmlns:app="http://schemas.android.com/apk/res-auto"

查看本教程:https://guides.codepath.com/android/Handling-Scrolls-with-CoordinatorLayout

答案 2 :(得分:0)

使用以下代码:

<android.support.design.widget.CoordinatorLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
    ...>

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
       <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|enterAlways"/>

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

    <android.support.v7.widget.RecyclerView
            android:id="@+id/rvToDoList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">

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

如果RecyclerView位于另一个片段中,则将以下行添加到此CoordinatorLayout中包含RecyclerView的视图中。

app:layout_behavior="@string/appbar_scrolling_view_behavior"

必须使用CoordinatorLayout