android - 使用协调器布局滚动 recyclerview 时无法隐藏工具栏

标签 android android-recyclerview android-coordinatorlayout

我在 fragment 中使用了以下代码。当我滚动 appbarlayout 时,工具栏会隐藏,但是当我滚动 recyclerview 时,它不会隐藏。我在这里做错了什么?

我的代码:

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

<android.support.design.widget.AppBarLayout
    android:id="@+id/tabanim_appbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <include
        android:id="@+id/toolbars"
        layout="@layout/custom_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_scrollFlags="scroll|enterAlways" />

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


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


<android.support.design.widget.FloatingActionButton
    android:id="@+id/floatbutton_nearby"
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:layout_gravity="bottom|right"
    android:layout_marginBottom="8dp"
    android:layout_marginRight="8dp"
    android:scaleType="center"
    android:src="@drawable/filter" />


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

custom_tooolbar 布局代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar 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/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways">

<GridView
    android:id="@+id/grid_nearby"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dp"
    android:gravity="center"
    android:horizontalSpacing="10dp"
    android:numColumns="4"
    android:verticalSpacing="10dp">

</GridView>

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

最佳答案

您需要将 RecycleView 放在 NestedScrollView 中,并在单独的布局中将布局行为设置为 NestedScrollView 并像这样包含在主布局中

content_scrolling.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView
    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:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <android.support.v7.widget.RecyclerView
    android:id="@+id/lv_nearby"
    android:clipToPadding="false"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</android.support.v4.widget.NestedScrollView>

你的布局

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

<android.support.design.widget.AppBarLayout
    android:id="@+id/tabanim_appbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <include
        android:id="@+id/toolbars"
        layout="@layout/custom_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_scrollFlags="scroll|enterAlways" />

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

   //Include your scroll layout here
   <include layout="@layout/content_scrolling"/>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/floatbutton_nearby"
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:layout_gravity="bottom|right"
    android:layout_marginBottom="8dp"
    android:layout_marginRight="8dp"
    android:scaleType="center"
    android:src="@drawable/filter" />


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

之后将 RecycleView 的嵌套滚动设置为 false,如下所示:

yourrecyclerView.setNestedScrollingEnabled(false);

关于android - 使用协调器布局滚动 recyclerview 时无法隐藏工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42337394/

相关文章:

android - 如何从 retrofit 响应中获取 JSON ARRAY 和 JSON 对象响应?

android - 在 ViewPager 中应用时在 Recycler 中滑动

android-studio - RecyclerView( Kotlin ): Adding an swipe to delete functionality on a ToDo app with data in SQL database

java - 确定 LayoutManager 预布局中出现的 View

android - 带有 CoordinatorLayout 的嵌套 RecyclerView

Android 在按下 widget ListView 项目时启动 Activity

android - 类型不匹配 : inferred type is String but Charset was expected in kotlin

android - AppBarLayout 不会完全折叠并且仅部分展开直到滚动到达顶部

android - 尝试调用时出现异常(SIP)

android - 使用 fragment 内的recyclerview在滚动时隐藏工具栏