如何仅固定 CollapsingToolbarLayout 的最后一个子项?

How to Pin only the last child of the CollapsingToolbarLayout?

假设我有以下 .xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout>
    
    <com.google.android.material.appbar.AppBarLayout>
        
        <com.google.android.material.appbar.CollapsingToolbarLayout>
            
            <androidx.appcompat.widget.Toolbar>
                <!--ToolBar here-->
            </androidx.appcompat.widget.Toolbar>

            <!-- scrolls with the recycler view - may have different heights -->
            <PageTitleHere
                app:layout_collapseMode="none"/>

            <!-- This view pins on top when scrolling -->
            <AViewThatShouldPinOnTopOnScroll
                app:layout_collapseMode="pin" />

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

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

    <androidx.recyclerview.widget.RecyclerView
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

我希望只有 CollapsingToolbarLayout 的最后一个子项在滚动时固定到顶部。问题是,如果我让 xml 保持原样,它的子项将全部放在它上面,相互重叠(因为 CollapsingToolbarLayout 继承 FrameLayout

知道 AViewThatShouldPinOnTopOnScroll 的高度可能会有所不同,如何仅通过编辑 XML 来实现我想要的?

要实现此行为,AViewThatShouldPinOnTopOnScroll 需要是 AppBarLayout 的直接子代;即从 CollapsingToolbarLayout 中取出它;不需要 app:layout_collapseMode="pin" 因为它不再是 CollapsingToolbarLayout 的一部分:

现在的XML结构:

<com.google.android.material.appbar.AppBarLayout>
    
    <com.google.android.material.appbar.CollapsingToolbarLayout>
        
        <androidx.appcompat.widget.Toolbar>
            <!--ToolBar here-->
        </androidx.appcompat.widget.Toolbar>

        <!-- scrolls with the recycler view - may have different heights -->
        <PageTitleHere/>

    </com.google.android.material.appbar.CollapsingToolbarLayout>
    
    <!-- This view pins on top when scrolling -->
    <AViewThatShouldPinOnTopOnScroll/>

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

演示

黄色的是AViewThatShouldPinOnTopOnScroll

解决问题的一个简单例子是:

<CoordinatorLayout>
    <AppBarLayout>
        <!-- scrolls -->
        <Toolbar
            android:layout_height="?attr/actionBarSize"
            app:layout_scrollFlags="scroll" />
        <!-- pins -->
        <TextView
            android:layout_marginTop="?attr/actionBarSize" />
    </AppBarLayout>
</CoordinatorLayout>