我正在尝试自己实现嵌套滚动(由于环境限制,我无法使用Coordinator和AppBarLayout
)。所以我创建了一个CoordinatorControl
,它派生自StackLayout
并实现INestedScrollingParent
,它保存条形视图和内容视图,并同步它们之间的嵌套滚动。
这是CoordinatorControlRenderer : ViewRenderer<CoordinatorControl, LinearLayout>, INestedScrollingParent
void INestedScrollingParent.OnNestedScroll(View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed)
{
if (dyConsumed > 0)
{
scrollDown = false;
}
else
{
scrollDown = true;
}
if (dyConsumed != 0 && (!scrollDown && totalPixels < barViewNative.Height || scrollDown && totalPixels > 0))
{
totalPixels += dyConsumed;
if (!scrollDown && totalPixels > barViewNative.Height)
{
totalPixels = (int)barViewNative.Height;
}
else if (scrollDown && totalPixels <0)
{
totalPixels = 0;
}
barViewNative.TranslationY = -totalPixels;
contentViewNative.TranslationY = -totalPixels;
}
else
{
target.ScrollY += dyConsumed;
}
}
嵌套滚动工作正常(条形视图正在折叠和展开)。唯一的问题是,当折叠时我在屏幕底部有一个间隙,我无法填补。
Bar View Expanded:
条形图折叠:
我试图改变contentView高度和重力但没有用。 如何更改contentView高度或让它自动填充剩余空间?