xamarin 如何更改Android的shell弹出行为与IOS相同

yh2wf1be  于 2022-12-07  发布在  Android
关注(0)|答案(1)|浏览(158)

The behavior of the navigation experience between flyout and detail pages is platform dependent:

  • On iOS, the detail page slides to the right as the flyout page slides from the left, and the left part of the detail page is still visible.
  • On Android, the detail and flyout pages are overlaid on each other.
  • On UWP, the flyout page slides from the left over part of the detail page, provided that the FlyoutLayoutBehavior property is set to

Popover. It it the deault behavior of different platform which we
could not change
I need a custom renderer for Xamarin Shell that changes the behaviour of Android to be similar to IOS one. Uploaded sample code
public class CustomShellRenderer : ShellRenderer { public CustomShellRenderer(Context context) : base(context) { }

protected override IShellFlyoutContentRenderer CreateShellFlyoutContentRenderer()
    {
        //var flyoutContentRenderer = base.CreateShellFlyoutContentRenderer();
        //var flyoutbackground = AppCompatResources.GetDrawable(Platform.CurrentActivity, Resource.Drawable.flyoutbackground);

        if (Android.OS.Build.VERSION.SdkInt > Android.OS.BuildVersionCodes.O)
        {
            //flyoutbackground.SetColorFilter(new BlendModeColorFilter(
            //    Shell.Current.FlyoutBackgroundColor.ToAndroid(), BlendMode.Color));
            //flyoutContentRenderer.AndroidView.SetBackground(flyoutbackground);
        }
        else
        {
            //flyoutbackground.SetColorFilter(Shell.Current.FlyoutBackgroundColor.ToAndroid(), PorterDuff.Mode.Src);
            //flyoutContentRenderer.AndroidView.SetBackgroundDrawable(flyoutbackground);
        }
        //return flyoutContentRenderer;
    }

}
xn1cxnb4

xn1cxnb41#

FlyoutPage如何管理弹出和详细页面取决于应用程序是在电话上还是在平板电脑上运行、设备的方向以及FlyoutLayoutBehavior属性的值。此属性确定详细页面的显示方式。可能的值为:

      • 默认值**-使用平台默认值显示页面。
      • 弹出**-详细信息页面覆盖或部分覆盖弹出页面。
      • 拆分**-弹出页面显示在左侧,详细信息页面显示在右侧。
      • SplitOnLandscape**-设备处于横向时使用分屏。
      • SplitOnPortrait**-设备处于纵向时使用分屏。

下面的XAML代码示例演示如何在FlyoutPage上设置FlyoutLayoutBehavior属性:

<FlyoutPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            x:Class="FlyoutPageNavigation.MainPage"
            FlyoutLayoutBehavior="Popover">
  ...
</FlyoutPage>

注意事项:
FlyoutLayoutBehavior属性的值仅影响在平板电脑或桌面上运行的应用程序。在手机上运行的应用程序始终具有Popover行为。
有关详细信息,请参阅文档:控制详细信息页面布局行为。

相关问题