我試圖對滾動事件(!)進行操作(嵌套)滾動視圖。CoordinatorLayout + NestedScrolling Grand-Child的自定義行爲
我有一個滾動視圖內的項目,我想「偷看」(翻譯成可見的屏幕區域)幾秒,如果它最初不可見在滾動視圖/屏幕。但只要容器滾動,我想隱藏它(翻譯回原點)。
因此,我試圖使用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 } }
我無法確認您的答案。我在這裏上傳了一個演示項目:https://github.com/chriswiesner/CoordinatorLayoutNestedScrolling 如果我把「MyView」作爲根協調器佈局的子項,它工作正常。但只要它在嵌套coordinatorLayout中,它不起作用 在此期間,我解決了我的問題,沒有coordinatorlayout並將scrollListener傳遞給MyView。這再次結合我的觀點,我想避免。所以我仍然很好奇這是如何通過CoordinatorLayout實現的 – cwiesner