【发布时间】:2021-07-17 23:01:12
【问题描述】:
我有 Xamarin 表单。我需要更改MasterDetailPage 的标准图标。属性图标不适用于 Android。我尝试添加自定义渲染器,但它不起作用。
[assembly: ExportRenderer(typeof(MainPage), typeof(IconNavigationPageRenderer))]
namespace masterDe.Droid
{
public class IconNavigationPageRenderer : MasterDetailPageRenderer
{
public IconNavigationPageRenderer(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 toolbar = GetToolbar();
if (toolbar != null)
{
for (var i = 0; i < toolbar.ChildCount; i++)
{
var imageButton = toolbar.GetChildAt(i) as Android.Widget.ImageButton;
var drawerArrow = imageButton?.Drawable as DrawerArrowDrawable;
if (drawerArrow == null)
continue;
// replace default hamburg icon
imageButton.SetImageDrawable(Forms.Context.GetDrawable(Resource.Drawable.icon));
}
}
}
}
}
GetToolbar() 始终为空。我该如何解决?
【问题讨论】:
-
我认为您不需要自定义渲染器,您是否尝试在母版页上添加类似
IconImageSource="hamburger.png"的内容?阅读here 了解它。
标签: c# android xamarin.forms custom-renderer