我需要拦截Android后退箭头/汉堡图标的点击事件。 在Xamarin中,通过NavigationPageRenderer获取工具栏并将方法添加到toolbar.NavigationClick相对容易:
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
base.OnLayout(changed, l, t, r, b);
var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
if (toolbar != null)
{
toolbar.NavigationClick += Toolbar_NavigationClick;
}
}
现在我需要找到一种在MAUI中实现它的方法,因为NavigationPageRenderer已经被弃用了。我不想在全新的MAUI应用程序中使用过时的代码。
在MAUI.iOS中,有一个NavigationRenderer,设置方式基本与Xamarin.iOS相同,但我一直没有成功地弄清楚在Android中如何做到这一点。
我尝试过在PageHandler和NavigationViewHandler中获取工具栏,但工具栏始终为空:
// this is in my NavigationViewHandler
protected override View CreatePlatformView()
{
var vw = base.CreatePlatformView();
var toolbar1 = vw.FindViewById<AndroidX.AppCompat.Widget.Toolbar>(Resource.Id.toolbar);
var toolbar2 = vw.FindViewById<AndroidX.AppCompat.Widget.Toolbar>(Resource.Layout.Toolbar);
// both of thosw return null
return viewGroup;
}
我认为我的主要挑战是我不理解如何使用这些处理程序,我们都知道 Microsoft 的文档写得很棕,所以现在是时候向比我聪明的所有人求助了。也许有一种更简单的方法来做到这一点?