边距不会在Android 4上更新

时间:2018-09-03 09:08:11

标签: android android-toolbar android-appbarlayout android-layoutparams

我正在将Toolbar隐藏在我的应用程序中,目前使用它包装在AppBarLayout中。 Toolbar可以正确移动/隐藏,但是我的自定义视图也存在问题,自定义视图也可以滑动,但不应该保留在父视图的底部(FrameLayout,{{1} }(儿童)。

我要使用layout_gravity="bottom"和以下边距来操纵底部空间:

OnOffsetChangedListener

在Android 8.1上,一切正常(仅适用于@Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { boolean scrollFlagsSet = ((AppBarLayout.LayoutParams) getToolbar().getLayoutParams()). getScrollFlags() != 0; int bottom = (!scrollFlagsSet ? 0 : getToolbarHeight()) + verticalOffset; ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) customView.getLayoutParams(); layoutParams.setMargins(layoutParams.leftMargin, layoutParams.topMargin, layoutParams.rightMargin, layoutParams.topMargin + bottom);//top margin same as bottom initially customView.requestLayout(); Log.(TAG,"calculated bottom: " + bottom); } 调用),我的requestLayout()停留在该位置,但是我已经在HTC上使用4.1对其进行了测试(是的,仍然支持... ),并且设置边距似乎只出现一次(第一次?)。 customView仍会随着嵌套滚动而滑动,它只是为初始View参数/距离移动了一点。bottom每次偏移量更改仍被调用。为什么以及如何预防?

我尝试使用Loginvalidate();forceLayout();requestLayout();获得相同的视图,但没有运气

结构草图(片段布局):

setLayoutParams(layoutParams);

0 个答案:

没有答案