android–Cheesesquare:enterAlways产生错误的布局

android–Cheesesquare:enterAlways产生错误的布局,第1张

概述将enterAlways添加到Cheesesquare演示的滚动标志:<android.support.design.widget.CollapsingToolbarLayout android:id='@+id/collapsing_toolbar' android:layout_width='match_parent' an

将enteralways添加到Cheesesquare演示的滚动标志:

导致错误布局

在向下滚动期间,标题正确进入,但它不会停在正确的位置.滚动进一步取代零件:背景图像显示在错误的位置,工具栏因背景颜色的变化而变得不可见. (我还在这里为工具栏添加了一个colorPrimary背景,使其更加明显,但问题当然不依赖于颜色).这些库是截至今天的最新版本,23.1.0.

是否有任何解决方法或我们必须等待它在库中修复?现在,它似乎是任何需要此功能的应用程序的showstopper.

enteralwaysCollapsed工作,但它提供了不同的功能,它不是一种解决方法.

最佳答案我通过对AppbarLayout类源代码进行了一些修补来解决了这个问题.显然他们并不认为人们会这样使用它.或者他们做了,我离开了.无论如何它对我有用.

您需要对此方法进行一些小改动.寻找SCRolL_FLAG_EXIT_UNTIL_ColLAPSED

 /** * Return the scroll range when scrolling down from a nested pre-scroll. */private int getDownnestedPreScrollRange() {    if (mDownPreScrollRange != INVALID_SCRolL_RANGE) {        // If we already have a valID value,return it        return mDownPreScrollRange;    }    int range = 0;    for (int i = getChildCount() - 1; i >= 0; i--) {        final VIEw child = getChildAt(i);        final LayoutParams lp = (LayoutParams) child.getLayoutParams();        final int childHeight = child.getMeasuredHeight();        final int flags = lp.mScrollFlags;        if ((flags & LayoutParams.FLAG_QUICK_RETURN) == LayoutParams.FLAG_QUICK_RETURN) {            // First take the margin into account            range += lp.topmargin + lp.bottommargin;            // The vIEw has the quick return flag combination...            if ((flags & LayoutParams.SCRolL_FLAG_ENTER_ALWAYS_ColLAPSED) != 0) {                // If they're set to enter collapsed,use the minimum height                range += VIEwCompat.getMinimumHeight(child);                // This is what is missing...            } else if ((flags & LayoutParams.SCRolL_FLAG_EXIT_UNTIL_ColLAPSED) == LayoutParams.SCRolL_FLAG_EXIT_UNTIL_ColLAPSED) {                range += childHeight - VIEwCompat.getMinimumHeight(child);            } else {                // Else use the full height                range += childHeight;            }        } else if (range > 0) {            // If we've hit an non-quick return scrollable vIEw,and we've already hit a            // quick return vIEw,return Now            break;        }    }    return mDownPreScrollRange = range;}

如果使用,可能需要递减状态栏高度
 “机器人:fitsSystemwindows =” 真”.

希望能帮助到你.您需要从设计库中复制一些类以允许所有导入和输入.一些将公开的方法.

干杯.

总结

以上是内存溢出为你收集整理的android – Cheesesquare:enterAlways产生错误的布局全部内容,希望文章能够帮你解决android – Cheesesquare:enterAlways产生错误的布局所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)