1

我正在尝试对(!)(嵌套)滚动视图中的滚动事件采取行动。

我在滚动视图中有一个项目,如果它最初在滚动视图/屏幕中不可见,我想“窥视”(转换为可见屏幕区域)几秒钟。但是一旦容器滚动,我想隐藏它(翻译回原点)。

因此,我尝试使用 CoordinatorLayout Behavior 来不将 scrollView 和我的(自定义)View 紧密耦合。

文章之后,我尝试编写自定义行为,但发现我无法在我的视图上应用此行为,因为它不是 CoordinatorLayout 的子项。如果我必须将其设置在直系孩子身上,我该如何对曾孙采取行动?

这怎么可能实现?

布局看起来像这样:

<CoordinatorLayout>
   <NestedScrollView>
       <LinearLayout>
          ...
          <MyView/>
       <LinearLayout/>
   </NestedScrollView>
</CoordinatorLayout>

行为非常简单:

公共类 MyBehaviour 扩展 CoordinatorLayout.Behavior{

    ...

    @覆盖
    public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, View child, View directTargetChild, View target, int
            嵌套滚动轴){
        返回真;
    }

    @覆盖
    public void onNestedScroll(CoordinatorLayout coordinatorLayout,查看子项,查看目标,int dxConsumed,int dyConsumed,int
            dxUnconsumed, int dyUnconsumed) {
        super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);

        // 作用于 MyView
    }
}
4

1 回答 1

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-> CoordinatorLayout-> NestedScrollView->CoordinatorLayout

在这样的布局FAB中对显示做出反应Snackbar

在此处输入图像描述 在此处输入图像描述

但是,这里的问题是与布局高度相结合,因此我强烈建议您重新考虑您的设计。

于 2016-08-31T09:17:50.727 回答