除非放在 NavigationPage 中,否则主详细信息图标不会响应 FlowDirection.RightToLeft
The Master detail icon doesn't respond to the FlowDirection.RightToLeft unless put in NavigationPage
即使我将 FlowDirection
设置为 RightToLeft
,主详细信息页面的汉堡包按钮始终位于左侧,当 MainPage
在 [=] 中以这种方式设置时会发生这种情况30=]:
MainPage = new MasterDetailPage();
菜单本身在右边:
但是我注意到当我把它放在 NavigationPage 中时它工作正常:
MainPage = new NavigationPage( new MasterDetailPage());
但是使用这种方法后退按钮仍然向左对齐!!
并且我必须将 NavigationPage.HasNavigationBar
设置为 False,以使其看起来正常(没有 NavigationBar 位于母版页的顶部)。
这个问题有解决办法吗?
我通过为 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 中设置主从页面)
即使我将 FlowDirection
设置为 RightToLeft
,主详细信息页面的汉堡包按钮始终位于左侧,当 MainPage
在 [=] 中以这种方式设置时会发生这种情况30=]:
MainPage = new MasterDetailPage();
菜单本身在右边:
但是我注意到当我把它放在 NavigationPage 中时它工作正常:
MainPage = new NavigationPage( new MasterDetailPage());
但是使用这种方法后退按钮仍然向左对齐!!
并且我必须将 NavigationPage.HasNavigationBar
设置为 False,以使其看起来正常(没有 NavigationBar 位于母版页的顶部)。
这个问题有解决办法吗?
我通过为 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 中设置主从页面)