我正在将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
每次偏移量更改仍被调用。为什么以及如何预防?
我尝试使用Log
,invalidate();
,forceLayout();
和requestLayout();
获得相同的视图,但没有运气
结构草图(片段布局):
setLayoutParams(layoutParams);