除非放入NavigationPage,否则Master详细信息图标不响应FlowDirection.RightToLeft

问题描述 投票:0回答:1

即使我将FlowDirection设置为RightToLeft,主详细信息页面的汉堡包按钮也始终在左侧,当在App.xaml.cs中以这种方式设置MainPage时会发生这种情况:

MainPage = new MasterDetailPage();

菜单本身在右边:

但是当我把它放在NavigationPage中时,我注意到它工作正常:

MainPage = new NavigationPage( new MasterDetailPage());,但采用这种方法,后退按钮仍然对齐左侧!

我必须将NavigationPage.HasNavigationBar设置为False,看起来正常(没有NavigationBar位于母版页的顶部)。有这个问题的解决方案吗?

xamarin xamarin.forms master-detail
1个回答
0
投票

我通过为NavigationPage创建渲染器来解决这个问题

[assembly: ExportRenderer(typeof(NavigationPage), typeof(CustomNavigationPageRenderer))]
namespace MyApp.Droid.Renderers
{

    class CustomNavigationPageRenderer : Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer
    {
        public CustomNavigationPageRenderer(Context context) : base(context) { }
        private static Android.Support.V7.Widget.Toolbar GetToolbar() => (CrossCurrentActivity.Current?.Activity as MainActivity)?.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);

        protected override void OnLayout(bool changed, int l, int t, int r, int b)
        {
            base.OnLayout(changed, l, t, r, b);
            var actionBar = GetToolbar();
            actionBar.LayoutDirection = Helpers.Settings.Lang == "ar" ? LayoutDirection.Rtl : LayoutDirection.Ltr;
        }

    }
}

使用第二种方法(在NavigationPage中设置主详细信息页面)

© www.soinside.com 2019 - 2024. All rights reserved.