我有一个应用程序,我添加了其他汉堡包图标,而不是默认的汉堡包图标。它可以在Android和iOS上使用,但不能在UWP中使用。有什么办法可以一致地改变图片吗?
答案 0 :(得分:0)
我创建了一个项目,然后我在这个项目中更改了汉堡菜单图标的图标。
我在Android中有一个解决方案,但我认为在iOS中是相同的方式。
您必须创建一个Custom MasterDetailPageRenderer类,并且必须从OnLayout函数中更改图标。
Android
[assembly: ExportRenderer(typeof(CustomMasterDetailPage), typeof(MasterNavigationPageRenderer))]
namespace XamarinForms.CustomControls.Droid.CustomRenderer
{
public class MasterNavigationPageRenderer : MasterDetailPageRenderer
{
private static Android.Support.V7.Widget.Toolbar GetToolbar() => (CrossCurrentActivity.Current?.Activity as MainActivity)?.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
private Android.Support.V7.Widget.Toolbar toolbar;
public MasterNavigationPageRenderer() : base() { }
public MasterNavigationPageRenderer(Context context) : base(context) { }
public MasterNavigationPageRenderer(IntPtr a, JniHandleOwnership b) : base() { }
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
base.OnLayout(changed, l, t, r, b);
toolbar = GetToolbar();
if (toolbar != null)
{
SetNavigationButton(Resource.Drawable.menu);
}
}
private void SetNavigationButton(int resourceID)
{
var icon = Forms.Context.GetDrawable(resourceID);
using (var drawable = ((BitmapDrawable)icon).Bitmap)
using (var bitmap = Bitmap.CreateScaledBitmap(drawable, 80, 80, false))
using (var newDrawable = new BitmapDrawable(Resources, bitmap))
{
toolbar.NavigationIcon = newDrawable;
}
}
}