Shell 导航栏滚动行为

Shell navigation bar scroll behavior

我想问一下是否可以在 Xamarin.Forms Shell 中为导航栏或 TabbedPage (TabLayout) 设置动画,当它滚动时隐藏或发现见gif。我在 Xamarin native android 中尝试过它,在添加 layout_scrollFlags.

后它可以工作

http://lomza.totem-soft.com/appbarlayout-scroll-behavior-with-layout_scrollflags

http://karthikraj.net/2016/12/24/scrolling-behavior-for-appbars-in-android

不确定您是否可以在 XF + Shell 中使用 android 样式实现此行为,但您可以通过覆盖 CreateToolbarAppearanceTracker().[=16 使用自定义渲染器来实现它=]

    public class MyShellRenderer : ShellRenderer
    {
        public MyShellRenderer(Context context) : base(context)
        {
        }

        protected override IShellToolbarAppearanceTracker CreateToolbarAppearanceTracker()
        {
            base.CreateToolbarAppearanceTracker();
            return new MyShellToolbarAppearanceTracker(this);
        }
    }

MyShellToolbarAppearanceTracker(随便命名)

using LP = Android.Views.ViewGroup.LayoutParams;
...
public class MyShellToolbarAppearanceTracker : ShellToolbarAppearanceTracker
{
        public MyShellToolbarAppearanceTracker(IShellContext shellContext) : base(shellContext)
        {
        }

        public override void SetAppearance(AndroidX.AppCompat.Widget.Toolbar toolbar, IShellToolbarTracker toolbarTracker, ShellAppearance appearance)
        {
            base.SetAppearance(toolbar, toolbarTracker, appearance);
            toolbar.LayoutParameters = new AppBarLayout.LayoutParams(LP.MatchParent, LP.WrapContent)
            {
                ScrollFlags = AppBarLayout.LayoutParams.ScrollFlagScroll |
                AppBarLayout.LayoutParams.ScrollFlagEnterAlways
            };
        }
}

不要忘记用 ExportRenderer 正确装饰它,如 documentation 中所述。


(如果以下链接 bug/issue 已关闭,请忽略此部分)

已知副作用

这是由 Xamarin.Forms Bug 13338

引起的微不足道的不良副作用