Xamarin Forms:更改Android默认页面推送动画

4
在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;
}

复制此渲染器文件。查看“case TransitionType.SlideFromRight”。根据需要进行调整。 - ToolmakerSteve
我尝试过这个,但它并不完全有效。在退出动画期间,被弹出的页面似乎比被显示的页面移动得更快,即使它们都有一个300毫秒的动画,根据XML文件。如果您为每个页面提供不同的背景颜色,这很容易看到。我在动画结束时看到屏幕右侧有一个白色闪光。 - user246392
默认的转场动画似乎设置为220毫秒。我将其更改为300毫秒,它完美地工作了!请参见https://github.com/xamarin/Xamarin.Forms/blob/cc1d05771a9ba5047aabc935d1d030f709340ae8/Xamarin.Forms.Platform.Android/AppCompat/NavigationPageRenderer.cs#L62如果您能将所有内容提交为答案,我会接受它。 - user246392
1个回答

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

据我所知,我们不应该在 NavigationPage 中嵌套 TabbedPage。至少在 iOS 上,这会导致意外的系统行为。相反,我们应该将每个选项卡子页面设置为 NavigationPage。 - user246392
但它对我有效,系统行为没有问题,在iOS和Android上本地运行。尝试使用新的简单项目并查看会发生什么。 - cahyo
你在使用Shell吗?在上面的例子中,我没有使用。 - user246392
不,我没有使用Shell。 - cahyo
@user246392 - TabbedPage doc 中提到:“重要提示:建议使用 NavigationPage 和 ContentPage 实例来填充 TabbedPage。”请注意可以使用 ContentPage。据我所知,这是通常情况;只有当您希望该选项卡本身包含多个可在其间滑动的页面时,才需要使用 NavigationPage。如果您不需要任何选项卡上的此功能,则可能可以使用 NavigationPage > TabbedPage > ContentPage - 尽管我尚未测试。 - ToolmakerSteve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接