简体   繁体   English

当我向上滚动 RecyclerView 时,工具栏和 TabLayout 不会隐藏

[英]Toolbar and TabLayout don't hide when I scroll the RecyclerView up

I am having trouble getting the Toolbar and TabLayout to hide when I scroll up.当我向上滚动时,我无法隐藏ToolbarTabLayout I have 3 different xml files: 1) Toolbar , 2) TabLayoutFragment (here I have the TabLayout and ViewPager , and I include the toolbar here, and 3) HomeFragment (contains the RecyclerView ).我有 3 个不同的 xml 文件:1) Toolbar ,2) TabLayoutFragment (这里我有TabLayoutViewPager ,我在这里包含toolbar ,以及 3) HomeFragment (包含RecyclerView )。 I need for the Toolbar to hide when I scroll up, and I have seen in many other posts that most people use a CoordinatorLayout instead of a Relative Layout or Linear Layout , and then they have to add app:layout_scrollFlags="scroll|enterAlways" which I have done, but I still can't get the Toolbar to hide when scrolling the RecyclerView up.我需要在向上滚动时隐藏Toolbar ,我在许多其他帖子中看到大多数人使用CoordinatorLayout而不是Relative LayoutLinear Layout ,然后他们必须添加app:layout_scrollFlags="scroll|enterAlways"我已经完成了,但是向上滚动RecyclerView时我仍然无法隐藏Toolbar

I've also added this to the RecyclerView , but still nothing... app:layout_behavior="@string/appbar_scrolling_view_behavior"我也将它添加到RecyclerView ,但仍然没有... app:layout_behavior="@string/appbar_scrolling_view_behavior"

Could someone point out what is missing here?有人可以指出这里缺少什么吗?

Toolbar工具栏

<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar_events"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#fff"
    android:fitsSystemWindows="true">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar_home_fragment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#fff"
            app:contentInsetEnd="0dp"
            app:contentInsetLeft="0dp"
            app:contentInsetRight="0dp"
            app:contentInsetStart="0dp"
            app:contentInsetStartWithNavigation="0dp"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_centerVertical="true"
                    android:fontFamily="@font/scriptbl"
                    android:text="Events"
                    android:textColor="@color/colorBlack"
                    android:textSize="60sp" />

                <ImageView
                    android:id="@+id/search"
                    style="@style/SelectableIconThemeBackground"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentEnd="true"
                    android:layout_centerVertical="true"
                    android:layout_marginEnd="10dp"
                    android:contentDescription="@string/camera"
                    android:padding="10dp"
                    android:src="@drawable/icon_search" />

                <ImageView
                    android:id="@+id/filter"
                    style="@style/SelectableIconThemeBackground"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:layout_toStartOf="@+id/search"
                    android:contentDescription="@string/camera"
                    android:padding="10dp"
                    android:src="@drawable/icon10_sort" />

                <ImageView
                    android:id="@+id/options"
                    style="@style/SelectableIconThemeBackground"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentStart="true"
                    android:layout_centerVertical="true"
                    android:layout_marginStart="10dp"
                    android:contentDescription="@string/options"
                    android:padding="10dp"
                    android:src="@drawable/icon_short_text" />

            </RelativeLayout>

        </androidx.appcompat.widget.Toolbar>

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

</androidx.coordinatorlayout.widget.CoordinatorLayout>

TabLayoutFragment TabLayoutFragment

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/fragment_home_tab_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:tag="Home"
    tools:context=".Fragment.TabLayoutFragment">

    <include
        android:id="@+id/toolbar_events"
        layout="@layout/toolbar_events" />

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:background="#fff"
        app:layout_scrollFlags="scroll|enterAlways"
        app:tabIndicatorColor="#000"
        app:tabIndicatorFullWidth="false"
        app:tabRippleColor="@android:color/transparent"
        app:tabSelectedTextColor="@color/colorBlack"
        app:tabTextColor="@color/colorBlack" />

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#fff"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</LinearLayout>

HomeFragment主页片段

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/fragment_home"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical"
    android:tag="fragment_home"
    tools:context=".Fragment.HomeFragment">

    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
        android:id="@+id/refresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/toolbar">

            <TextView
                android:id="@+id/welcome"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="100dp"
                android:gravity="center"
                android:text="Welcome to Events!"
                android:textColor="#d9d9d9"
                android:textSize="36sp"
                android:visibility="gone" />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <TextView
                    android:id="@+id/location"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:drawablePadding="5dp"
                    android:gravity="center_horizontal"
                    android:padding="8dp"
                    app:drawableStartCompat="@drawable/icon_loc" />

                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/recycler_view"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/location"
                    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

            </RelativeLayout>

            <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/recycler_view_following"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:visibility="gone"
                app:layout_behavior="@string/appbar_scrolling_view_behavior" />

        </RelativeLayout>

    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

</RelativeLayout>

You can make it programmatically by adding the addOnScrollListener method.您可以通过添加addOnScrollListener方法以编程方式实现它。

On the RecyclerView.SCROLL_STATE_DRAGGING method hide the toolbar and TabLayout and on RecyclerView.SCROLL_STATE_IDLE method you can show it again if you want to show them again.RecyclerView.SCROLL_STATE_DRAGGING方法中隐藏工具栏和 TabLayout,在RecyclerView.SCROLL_STATE_IDLE方法中,如果你想再次显示它们,你可以再次显示它们。

You can try it in such way:你可以这样尝试:

recyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
    if (newState == RecyclerView.SCROLL_STATE_IDLE) {
        // Show your view again.. If you want to show them..
    } else if (newState == RecyclerView.SCROLL_STATE_DRAGGING) {
        // Hide your view..
    }

    super.onScrollStateChanged(recyclerView, newState);

}});

Or You can use recycler view's addOnScrollListener method:或者您可以使用回收站视图的addOnScrollListener方法:

Refer: addOnScrollListener参考: addOnScrollListener

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    if (dy > 0) {
        //Scrolling down
        // Show your controllers from here
    } else if (dy < 0) {
        //Scrolling up
        // Hide your controllers from here
    }
}});

Also, you can add some animations there to show and hide your toolbar and tab layouts.此外,您可以在那里添加一些动画来显示和隐藏您的工具栏和选项卡布局。

Place the toolbar and the tablayout within the ScrollView group to get the scrolling part.将工具栏和 tablayout 放在 ScrollView 组中以获得滚动部分。

<ScrollView>
   <Toolbar></Toolbar>
   <Tablayout></Tablayout>
</ScrollView>

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

相关问题 如果我向下滚动片段中的recyclerView,如何自动隐藏工具栏? - How to hide toolbar automatically if I scroll down the recyclerView inside a fragment? 使用SearchView隐藏工具栏和布局 - Hide toolbar and tablayout with searchview 片段中存在TabLayout时如何隐藏活动工具栏? - How to hide toolbar of activity when tablayout is present in fragment? 工具栏在滚动不起作用时自动隐藏和显示 - toolbar auto hide and show when scroll not working 向上滚动时,CoordinatorLayout + CollapsingToolbarLayout未设置工具栏 - CoordinatorLayout + CollapsingToolbarLayout not setting toolbar when scroll up 滚动recyclerview时如何在状态栏下完全隐藏工具栏 - How to hide toolbar fully under status bar when scrolling recyclerview 标签不会与 TabLayout 一起出现 - Tabs don't appear with TabLayout 滑动到特定页面时是否可以隐藏工具栏并禁用滚动? - Is it possible to hide the Toolbar and disable the scroll when swiping to specific page? 如何在RecylerView布局中修复按钮的位置? 我不希望按钮与RecyclerView中的图像一起滚动 - How can I fix the position of buttons in a RecylerView layout? I don't want the buttons to scroll along with the image in RecyclerView Android TabLayout使用listfragment向上滚动动画 - Android TabLayout scroll up animation with listfragment
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM