在垂直 RecyclerView 内的水平 RecyclerView 上垂直滚动时,AppBarLayout 不会 collapse/expand
AppBarLayout does not collapse/expand when scrolling vertically over horizontal RecyclerView inside vertical RecyclerView
当垂直 RecyclerView 有一个水平 RecyclerView 时,如果用户开始用手指在水平 RecyclerView 上垂直滚动,则 AppBarLayout 根本不会移动。如果手指在其他列表项上,则 AppBarLayout 会更改其状态。
CollapsibleToolbar
的代码取自 this 文章。
AppBarLayout 中的 CollapsingToolbarLayout
问题仍然存在。
我的代码有问题还是库错误?
<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
tools:context=".MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="76dp"
android:theme="@style/AppTheme.AppBarOverlay.Light">
<com.example.notcollapsingappbar.CollapsibleToolbar
android:id="@+id/motion_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="@dimen/actionBarSize"
app:layoutDescription="@xml/scene_header"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:popupTheme="@style/AppTheme.PopupOverlay" />
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start|center_vertical"
android:text="Large title"
android:textColor="@android:color/white"
android:textSize="30sp"
app:autoSizeTextType="uniform" />
</com.example.notcollapsingappbar.CollapsibleToolbar>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="16dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
您可以将此行添加到水平线 RecyclerView
。
android:nestedScrollingEnabled="false"
或以编程方式:
recyclerView.setNestedScrollingEnabled(false);
@potados 的回答解决了这个问题。但没有解释为什么它有效。
我用同样的问题创建了一个 issue on GitHub page of material components android。我想 post 我在那里收到的答案。
try to set nestedScrollEnable of Horizontal RecyclerView to false
If NestedScrollingChild as a child View is enabled, NestedScrollingParent as a parent layout will not intercept scrolling events
当垂直 RecyclerView 有一个水平 RecyclerView 时,如果用户开始用手指在水平 RecyclerView 上垂直滚动,则 AppBarLayout 根本不会移动。如果手指在其他列表项上,则 AppBarLayout 会更改其状态。
CollapsibleToolbar
的代码取自 this 文章。
AppBarLayout 中的 CollapsingToolbarLayout
问题仍然存在。
我的代码有问题还是库错误?
<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
tools:context=".MainActivity">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="76dp"
android:theme="@style/AppTheme.AppBarOverlay.Light">
<com.example.notcollapsingappbar.CollapsibleToolbar
android:id="@+id/motion_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="@dimen/actionBarSize"
app:layoutDescription="@xml/scene_header"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:popupTheme="@style/AppTheme.PopupOverlay" />
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start|center_vertical"
android:text="Large title"
android:textColor="@android:color/white"
android:textSize="30sp"
app:autoSizeTextType="uniform" />
</com.example.notcollapsingappbar.CollapsibleToolbar>
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:paddingBottom="16dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
您可以将此行添加到水平线 RecyclerView
。
android:nestedScrollingEnabled="false"
或以编程方式:
recyclerView.setNestedScrollingEnabled(false);
@potados 的回答解决了这个问题。但没有解释为什么它有效。
我用同样的问题创建了一个 issue on GitHub page of material components android。我想 post 我在那里收到的答案。
try to set nestedScrollEnable of Horizontal RecyclerView to false
If NestedScrollingChild as a child View is enabled, NestedScrollingParent as a parent layout will not intercept scrolling events