【问题标题】:How to replace hamburger icon with other icon in UWP xamarin forms如何用 UWP xamarin 表单中的其他图标替换汉堡包图标
【发布时间】:2019-07-09 10:46:50
【问题描述】:

我有一个应用程序,我添加了其他汉堡包图标而不是默认的汉堡包图标。它适用于 Android 和 iOS,但不适用于 UWP。有什么办法可以不断地改变图片吗?

【问题讨论】:

  • 您是否在 MasterPage 上手动设置了图标。即在 MasterDetailAppPageMaster.xaml 中?
  • 是的。我在 navigationpage.Titleview 中添加了图标

标签: xamarin xamarin.forms xamarin.uwp


【解决方案1】:

我创建了一个项目,这个项目我改变了汉堡菜单图标的图标。

我在 Android 中有一个解决方案,但我认为在 iOS 中也是如此。

您必须创建一个自定义 MasterDetailPageRenderer 类,并且您必须从 OnLayout 函数更改图标。

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

安卓

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2018-04-27
    • 2016-05-25
    • 1970-01-01
    相关资源
    最近更新 更多