在工具栏上方显示粘滞按钮

Display Sticky button above of Toolbar

我有以下布局:

<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:orientation="vertical"
        android:layout_width="match_parent" android:layout_height="match_parent">

    <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            android:minHeight="?attr/actionBarSize"
            app:theme="@style/Toolbar"/>

    <com.sample.android.scrolltricks.ObservableScrollView
            android:id="@+id/scroll_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">

            <LinearLayout android:layout_width="match_parent"
                          android:layout_height="wrap_content"
                          android:orientation="vertical">

                <ImageView style="@style/Item"
                           android:scaleType="centerCrop"
                           android:src="@drawable/london_flat"
                           tools:ignore="contentDescription"/>

                <View android:id="@+id/placeholder"
                      android:layout_width="match_parent"
                      android:layout_height="@dimen/sticky_height"/>

                <View style="@style/Item.Bottom"/>
                <View style="@style/Item.Bottom.Alt"/>
                <View style="@style/Item.Bottom"/>
                <View style="@style/Item.Bottom.Alt"/>
                <View style="@style/Item.Bottom"/>
                <View style="@style/Item.Bottom.Alt"/>

            </LinearLayout>

            <Button android:id="@+id/sticky" style="@style/Sticky"/>

        </FrameLayout>

    </com.sample.android.scrolltricks.ObservableScrollView>

</LinearLayout>

这是滚动时显示粘滞按钮的代码:

override fun onScrollChanged(scrollY: Int) {
        sticky.translationY = Math.max(
            placeholder.top - resources.getDimension(R.dimen.sticky_height) / 2,
            scrollY.toFloat() - 65
        )
    }

粘滞按钮显示在工具栏下方,我想将其部分显示在工具栏上方。 (scrollY.toFloat() - 65)

你知道怎么解决吗?

不幸的是,在您的布局中,您不能将 Button 置于 ScrollView 之上。 您的 ButtonFrameLayout 的子项,FrameLayoutScrollView 本身的子项,因此其绘图区域受父项边界的限制。

最好将所有内容包装在 CoordinatorLayout 中,然后在您想要特定定位的 View 上应用自定义 CoordinatorLayout.Behavior

希望对您有所帮助。

这是我解决问题的 link 布局:https://github.com/Ali-Rezaei/Scrolltricks/blob/master/app/src/main/res/layout/activity_main.xml