即使我将FlowDirection
设置为RightToLeft
,母版详细信息页面的汉堡包按钮也始终位于左侧,这是在App.xaml中以这种方式设置MainPage
时发生的。 cs:
MainPage = new MasterDetailPage();
菜单本身在右侧:
但是我注意到当我将其放在NavigationPage中时,它可以正常工作:
MainPage = new NavigationPage( new MasterDetailPage());
但是通过这种方法,后退按钮仍然与左侧对齐!
,并且我必须将NavigationPage.HasNavigationBar
设置为False才能看起来正常(没有NavigationBar位于母版页的顶部)。
有解决这个问题的方法吗?
答案 0 :(得分: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中设置主从页面)