【问题标题】:Xamarin Forms: Change default page push animation on AndroidXamarin Forms:更改 Android 上的默认页面推送动画
【发布时间】:2022-01-14 00:42:02
【问题描述】:

在 Xamarin Forms 5.0 中,我创建了一个 TabbedPage 并将 NavigationPage 实例嵌套为其子级。我注意到页面推送动画不像 iOS 那样从右向左滑动。如何更改默认过渡动画?请注意,我不想为动画使用第三方库。理想情况下,我想使用自定义渲染器/效果来解决这个问题。

private void SetMainPage()
{
    var tabbedPage = new Xamarin.Forms.TabbedPage { BarBackgroundColor = Color.White };

    Xamarin.Forms.PlatformConfiguration.AndroidSpecific.TabbedPage.SetToolbarPlacement(tabbedPage, ToolbarPlacement.Bottom);

    tabbedPage.Children.Add(new NavigationPage(new AboutPage()) { BarBackgroundColor = Color.Black, Title = "Tab1", IconImageSource = "icon_about" });
    tabbedPage.Children.Add(new NavigationPage(new AboutPage()) { BarBackgroundColor = Color.Black, Title = "Tab2", IconImageSource = "icon_feed" });

    MainPage = tabbedPage;
}

【问题讨论】:

  • 复制this renderer file。请参阅“案例 TransitionType.SlideFromRight”。根据需要进行调整。
  • 我试过这个,但它不能 100% 工作。在退出动画期间,被弹出的页面似乎比正在显示的页面移动得更快,即使根据 xml 文件它们都有 300 毫秒的动画。如果您为每个页面设置不同的背景颜色,这很容易看出。我在动画结束时看到屏幕右侧出现白色闪光。
  • 看起来默认过渡动画设置为 220 毫秒。我将其更改为 300 毫秒,并且效果很好!请参阅github.com/xamarin/Xamarin.Forms/blob/… 如果您可以提交所有内容作为答案,我会接受。

标签: xamarin xamarin.forms xamarin.android


【解决方案1】:

为什么不直接使用 NavigationPage 作为 TabbedPage 的父级?我正在使用 XF 5.0.0.2012 并以这种方式工作

【讨论】:

  • 据我所知,我们不应该在 NavigationPage 中嵌套 TabbedPage。至少,在 iOS 上,这会导致意外的系统行为。相反,我们应该让每个子标签成为 NavigationPage。
  • 但它适用于我并且系统行为没有问题,它可以在 iOS 和 Android 上本地运行。尝试新的简单项目,看看会发生什么
  • 你在使用Shell吗?在上面的例子中,我不是。
  • 不,我没有使用 Shell
  • @user246392 - TabbedPage doc 说“重要提示:建议 TabbedPage 应仅填充 NavigationPage 和 ContentPage 实例。”请注意使用ContentPage 的选项。那是通常情况下的AFAIK;如果您希望该选项卡本身包含多个可以在其之间滑动的页面,则只需要NavigationPage。如果您不需要在任何选项卡上使用它,您可以使用 NavigationPage > TabbedPage > ContentPage - 虽然我还没有测试过。
猜你喜欢
  • 2017-05-23
  • 1970-01-01
  • 2019-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多