Как заменить значок гамбургера другим значком в формах UWP xamarin - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть приложение, я добавил другой значок гамбургера вместо значка по умолчанию гамбургер.Он работает как в Android, так и в iOS, но не в UWP.Есть ли способ последовательно менять картинку?

1 Ответ

0 голосов
/ 04 июня 2019

Я создал проект, и в этом проекте я меняю значок значка меню гамбургера.

У меня есть решение в Android, но я думаю, что в iOS то же самое.

Вы должны создать пользовательский класс MasterDetailPageRenderer и изменить значок в функции OnLayout.

Project https://github.com/officialdoniald/Xamarin.Forms.CustomControls/blob/master/XamarinForms.CustomControls/XamarinForms.CustomControls.Android/CustomRenderer/MasterNavigationPageRenderer.cs

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;
        }
    }
}
...