android– 另一个CoordinatorLayout里面的CoordinatorLayout

android– 另一个CoordinatorLayout里面的CoordinatorLayout,第1张

概述CorodinatorLayout在另一个CoordinatorLayout内部,这样滚动子视图也应该滚动ParentCoordinatorLayout.我有一个带有ViewPager的coordinatorLayout,它包含不同的Fragment,以便在Scroll上隐藏tabLayout我有另一个具有viewPager的coordinatorLayout.此片段在父片段(父协调器布局)的

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1102664.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存