
CorodinatorLayout在另一个CoordinatorLayout内部,这样滚动子视图也应该滚动Parent CoordinatorLayout.
我有一个带有VIEwPager的coordinatorLayout,它包含不同的Fragment,以便在Scroll上隐藏tabLayout
我有另一个具有vIEwPager的coordinatorLayout.此片段在父片段(父协调器布局)的VIEwPager中膨胀.
问题是在childVIEwpager中滚动子片段只反映在子片段的协调器布局中,而不是在我需要做的隐藏tablayout的父协调器布局中.
结构是:
CoordinatorLayout(p) ->(tablayout(p) & VIEwPager(p) -> CoordinatorLayout(c) ->(tablayout(c) & VIEwPAger(c) ->recyclerVIEw(cc)))p -> parent;c -> child; cc -> child to child如何在滚动回收器视图上进行 *** 作将影响协调器布局,以便工具栏tablayout(p)将被隐藏.
解决方法:
我知道这是一个老问题.
但是我搜索了很长一段时间在一个片段中包含一个CoordinatorLayout,它位于另一个CoordinatorLayout中.
我稍微修改了dev.bmax的答案,调用两个协调器布局并调用两个布局的附加行为.
所以这是我的解决方案.
@SuppressWarnings("unused")public class nestedCoordinatorLayout extends CoordinatorLayout implements nestedScrollingChild { private nestedScrollingChildHelper mChildHelper; public nestedCoordinatorLayout(Context context) { super(context); mChildHelper = new nestedScrollingChildHelper(this); setnestedScrollingEnabled(true); } public nestedCoordinatorLayout(Context context, AttributeSet attrs) { super(context, attrs); mChildHelper = new nestedScrollingChildHelper(this); setnestedScrollingEnabled(true); } public nestedCoordinatorLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mChildHelper = new nestedScrollingChildHelper(this); setnestedScrollingEnabled(true); } @OverrIDe public boolean onStartnestedScroll(VIEw child, VIEw target, int nestedScrollAxes) { /* Enable the scrolling behavior of our own children */ boolean tHandled = super.onStartnestedScroll(child, target, nestedScrollAxes); /* Enable the scrolling behavior of the parent's other children */ return startnestedScroll(nestedScrollAxes) || tHandled; } @OverrIDe public voID onStopnestedScroll(VIEw target) { /* disable the scrolling behavior of our own children */ super.onStopnestedScroll(target); /* disable the scrolling behavior of the parent's other children */ stopnestedScroll(); } @OverrIDe public voID onnestedPreScroll(VIEw target, int dx, int dy, int[] consumed) { int[][] tConsumed = new int[2][2]; super.onnestedPreScroll(target, dx, dy, tConsumed[0]); dispatchnestedPreScroll(dx, dy, tConsumed[1], null); consumed[0] = tConsumed[0][0] + tConsumed[1][0]; consumed[1] = tConsumed[0][1] + tConsumed[1][1]; } @OverrIDe public voID onnestedScroll(VIEw target, int dxconsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { super.onnestedScroll(target, dxconsumed, dyConsumed, dxUnconsumed, dyUnconsumed); dispatchnestedScroll(dxconsumed, dyConsumed, dxUnconsumed, dyUnconsumed, null); } @OverrIDe public boolean onnestedPreFling(VIEw target, float veLocityX, float veLocityY) { boolean tHandled = super.onnestedPreFling(target, veLocityX, veLocityY); return dispatchnestedPreFling(veLocityX, veLocityY) || tHandled; } @OverrIDe public boolean onnestedFling(VIEw target, float veLocityX, float veLocityY, boolean consumed) { boolean tHandled = super.onnestedFling(target, veLocityX, veLocityY, consumed); return dispatchnestedFling(veLocityX, veLocityY, consumed) || tHandled; } @OverrIDe public voID setnestedScrollingEnabled(boolean enabled) { mChildHelper.setnestedScrollingEnabled(enabled); } @OverrIDe public boolean isnestedScrollingEnabled() { return mChildHelper.isnestedScrollingEnabled(); } @OverrIDe public boolean startnestedScroll(int axes) { return mChildHelper.startnestedScroll(axes); } @OverrIDe public voID stopnestedScroll() { mChildHelper.stopnestedScroll(); } @OverrIDe public boolean hasnestedScrollingParent() { return mChildHelper.hasnestedScrollingParent(); } @OverrIDe public boolean dispatchnestedScroll(int dxconsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int[] offsetInWindow) { return mChildHelper.dispatchnestedScroll(dxconsumed, dyConsumed, dxUnconsumed, dyUnconsumed, offsetInWindow); } @OverrIDe public boolean dispatchnestedPreScroll(int dx, int dy, int[] consumed, int[] offsetInWindow) { return mChildHelper.dispatchnestedPreScroll(dx, dy, consumed, offsetInWindow); } @OverrIDe public boolean dispatchnestedFling(float veLocityX, float veLocityY, boolean consumed) { return mChildHelper.dispatchnestedFling(veLocityX, veLocityY, consumed); } @OverrIDe public boolean dispatchnestedPreFling(float veLocityX, float veLocityY) { return mChildHelper.dispatchnestedPreFling(veLocityX, veLocityY); }} 总结 以上是内存溢出为你收集整理的android – 另一个CoordinatorLayout里面的CoordinatorLayout全部内容,希望文章能够帮你解决android – 另一个CoordinatorLayout里面的CoordinatorLayout所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)