【问题标题】:Xamarin.Forms Shell Back Button Disable AnimationXamarin.Forms Shell 后退按钮禁用动画
【发布时间】:2020-03-11 09:10:55
【问题描述】:

我目前正在构建一个应用程序,当在 Shell 中弹出和推送导航时不需要动画。

我把它理解为推送页面,因为这只是对该函数的“错误”声明,但是覆盖后退按钮功能似乎对弹出动画没有任何影响。

以下内容应覆盖应用程序中所有页面的后退按钮,以执行不带动画的 Pop,但仍有动画发生。

我是不是做错了什么?

public partial class AppShell : Xamarin.Forms.Shell
{
    public AppShell()
    {
        InitializeComponent();
    }

    protected override bool OnBackButtonPressed()
    {
        Current.Navigation.PopAsync(false);
        return true;
    }
}

【问题讨论】:

    标签: c# .net xamarin xamarin.forms


    【解决方案1】:

    这是 Xamarin 的一个开放错误,可在此 Github issue 中找到。

    据我了解,xamarin 团队认为这是一项重大更改,可能需要一些时间来修复。

    建议

    那里有一条评论使用自定义渲染器通过以下方式解决此问题:

    [assembly: ExportRenderer(typeof(NavigationPage), typeof(CNavigationPageRenderer))]
    namespace TestApp.Droid
    {
    public class CNavigationPageRenderer : NavigationPageRenderer
    {
        public CNavigationPageRenderer(Context context) : base(context)
        {
    
        }
    
        protected override Task<bool> OnPushAsync(Page view, bool animated)
        {
            return base.OnPushAsync(view, false);
        }
    
        protected override Task<bool> OnPopViewAsync(Page page, bool animated)
        {
            return base.OnPopViewAsync(page, false);
        }
    
        protected override Task<bool> OnPopToRootAsync(Page page, bool animated)
        {
            return base.OnPopToRootAsync(page, false);
        }
    }
    }
    

    对其他平台做同样的事情。正如我所说,这使得 Core 中的动画标志无用,但至少它会禁用所有页面动画,即使您使用后退按钮也是如此,因为它应该调用 OnPopViewAsync。

    您可能会在此处添加自定义逻辑以扫描页面类型或一组特定条件(例如您的自定义逻辑 [即非动画推送应该与该特定页面的非动画弹出相结合])。

    如果您有任何疑问,欢迎随时回复

    【讨论】:

    • 酷,你会不会也有一个 iOS 的例子? :)
    • 我没有带它,但我会试着找出来,如果我有任何发现会回复你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多