(ネストされた)スクロールビュー内(!)でスクロールイベントに作用しようとしています。
スクロールビュー/画面に最初に表示されていない場合、数秒間「覗き見」(表示されている画面領域に変換) したいアイテムがスクロールビュー内にあります。しかし、コンテナーがスクロールされるとすぐに、それを非表示にしたい (元に戻す)。
したがって、私は 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 に作用する } }