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 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 已关闭,请忽略此部分)