
将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产生错误的布局所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)