Xamarin表单 - 在工具栏中添加带颜色的png图标

时间:2018-04-09 10:47:21

标签: xamarin xamarin.forms

这是我的代码

ToolbarItems.Add(new ToolbarItem("User", "userAvatar.png", async () => {
            await Navigation.PopToRootAsync();
        }));

它不起作用。它是一个蒙面的单色图像,而不是颜色的png。

我正在尝试存档这样的东西......

enter image description here

有任何线索吗?

3 个答案:

答案 0 :(得分:1)

我曾经对这个问题感到生气过(我的情况有点微妙,我有一个简单的彩色图标,并且想知道为什么黑色彩色图标会克服这个问题并不容易。

单色图标是iOS应用程序的默认行为,Xamarin.Forms实现了此行为。根据{{​​3}},您需要自定义渲染器才能在导航栏中显示彩色图标。

修改

根据this post,您必须为自定义渲染器中的相应图像设置UIImageRenderingMode

image = image.ImageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);

使用this post中的渲染器实现,它应该是

行中的内容
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(TabbedPage), typeof(MyProject.iOS.Renderers.IosMainMenuRenderer))]

namespace MyProject.iOS.Renderers {
    public class IosMainMenuRenderer : TabbedRenderer {
        public override void ViewWillAppear(bool animated)
        {
            base.ViewWillAppear(animated);
            var items = TabBar.Items;
            for (var i = 0; i < items.Length; i++) {
                items[i].Image = items[i].ImageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);
                items[i].SelectedImage = items[i].SelectedImage.ImageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal);
            }
        }
    }
}

但我没有测试过这个!

答案 1 :(得分:0)

最简单的方法是不使用工具栏,而是在导航到该页面时将此页面的类型设置为模态(使用Navigation.PushModal())。并添加一个水平LinearLayout作为工具栏。

答案 2 :(得分:0)

对于我所有导航页面右侧的彩色徽标,我使用了此自定义渲染器:

switch(bits) { ... }