我试图在(!)a(嵌套)Scrollview中对Scroll Events采取行动。
我在Scrollview中有一个项目,我希望"偷看" (如果它在滚动视图/屏幕中最初不可见,则转换为可见屏幕区域)几秒钟。但是一旦滚动容器,我想隐藏它(转换回原点)。
因此,我试图使用CoordinatorLayout行为来紧密耦合scrollView和我的(自定义)视图。
在the article之后,我尝试编写自定义行为,但我发现,我无法在我的视图中应用此行为,因为它不是CoordinatorLayout的子项。如果我必须把它放在一个直接的孩子身上,我怎么能对这个曾经的大孩子采取行动呢?
如何实现这一目标?
布局看起来像那样:
<CoordinatorLayout>
<NestedScrollView>
<LinearLayout>
...
<MyView/>
<LinearLayout/>
</NestedScrollView>
</CoordinatorLayout>
行为非常简单:
public class MyBehaviour extends CoordinatorLayout.Behavior{ ... @Override public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, View child, View directTargetChild, View target, int nestedScrollAxes) { return true; } @Override public void onNestedScroll(CoordinatorLayout coordinatorLayout, View child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); // act on MyView } }
答案 0 :(得分:0)
在这篇文章之后,我尝试编写一个自定义行为,但我发现,我不能在我的视图中应用此行为,因为它不是CoordinatorLayout的子项。
这不完全正确。可以模拟视图对CoordinatorLayout
Behaviour
更改做出反应的情况。这是一个简单的例子:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="1700px"
android:text="Hello World!"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_email"/>
</android.support.design.widget.CoordinatorLayout>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
</android.support.design.widget.CoordinatorLayout>
正如您所见,FloatingActionButton
位于
CoordinatorLayout
- &gt; CoordinatorLayout
- &gt; NestedScrollView
- &gt; CoordinatorLayout
在此类布局FAB
对显示的Snackbar
做出反应:
但是,此处的问题是与布局高度相结合,因此我强烈建议您重新考虑您的设计。