在工具栏上方显示粘滞按钮
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
之上。
您的 Button
是 FrameLayout
的子项,FrameLayout
是 ScrollView
本身的子项,因此其绘图区域受父项边界的限制。
最好将所有内容包装在 CoordinatorLayout
中,然后在您想要特定定位的 View
上应用自定义 CoordinatorLayout.Behavior
。
希望对您有所帮助。
这是我解决问题的 link 布局:https://github.com/Ali-Rezaei/Scrolltricks/blob/master/app/src/main/res/layout/activity_main.xml
我有以下布局:
<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
之上。
您的 Button
是 FrameLayout
的子项,FrameLayout
是 ScrollView
本身的子项,因此其绘图区域受父项边界的限制。
最好将所有内容包装在 CoordinatorLayout
中,然后在您想要特定定位的 View
上应用自定义 CoordinatorLayout.Behavior
。
希望对您有所帮助。
这是我解决问题的 link 布局:https://github.com/Ali-Rezaei/Scrolltricks/blob/master/app/src/main/res/layout/activity_main.xml