Я написал пользовательский рендер для NavigationPage
, чтобы сбросить значок гамбургера / меню со своим собственным значком. Я разместил созданный значок во всех папках mdpi, hdpi, .... При создании приложения на самом деле выбирается довольно большая версия иконки, и поэтому вызывается requestLayout()
.
Любые предложения по избежанию этой топики c, поскольку это вызывает некоторые проблемы с производительностью.
Вот мой пользовательский рендер:
public class IconNavigationPageRenderer : NavigationPageRenderer
{
public IconNavigationPageRenderer(Context context) : base(context)
{
}
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)
{
for (var i = 0; i < toolbar.ChildCount; i++)
{
var imageButton = toolbar.GetChildAt(i) as Android.Widget.ImageButton;
imageButton?.SetMaxHeight(toolbar.Height);
Android.Graphics.Drawables.Drawable dr = Context.GetDrawable(Resource.Drawable.Icon_black);
if (imageButton?.Drawable.GetHashCode() == dr.GetHashCode())
continue;
var drawerArrow = imageButton?.Drawable as DrawerArrowDrawable;
if (drawerArrow == null)
continue;
imageButton.SetImageDrawable(dr);
}
}
}
}