1

(ネストされた)スクロールビュー内(!)でスクロールイベントに作用しようとしています。

スクロールビュー/画面に最初に表示されていない場合、数秒間「覗き見」(表示されている画面領域に変換) したいアイテムがスクロールビュー内にあります。しかし、コンテナーがスクロールされるとすぐに、それを非表示にしたい (元に戻す)。

したがって、私は CoordinatorLayout Behavior を使用して、scrollView と私の (カスタム) ビューを密結合させないようにしています。

記事に従って、カスタム動作を記述しようとしましたが、CoordinatorLayout の子ではないため、ビューにこの動作を適用できないことがわかりました。直接の子に設定する必要がある場合、どうすればひ孫に対応できますか?

これはどのように達成できますか?

レイアウトは次のようになります。

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

動作は非常に単純です。

public class MyBehaviour extends CoordinatorLayout.Behavior{

    ...

    @オーバーライド
    public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, View child, View directTargetChild, View target, int
            ネストされたスクロール軸) {
        true を返します。
    }

    @オーバーライド
    public void onNestedScroll(CoordinatorLayout coordinatorLayout, View child, View ターゲット, int dxConsumed, int dyConsumed, int
            dxUnconsumed, int dyUnconsumed) {
        super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);

        // MyView に作用する
    }
}
4

1 に答える 1