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