【问题标题】:How to add an icon in navigation bar for navigation page in xamarin forms for android?如何在导航栏中为 Android 的 xamarin 表单中的导航页面添加图标?
【发布时间】:2017-04-18 07:22:41
【问题描述】:

我制作了简单的导航页面。 现在我想在导航栏中添加 android 的图标。

我添加了一个屏幕截图,并在我想添加图标的地方用黑色圆圈突出显示。

我也尝试了自定义渲染器。
这是这篇文章提供的答案:Change icon on Navigation bar - Xamarin.Forms Android

但对我不起作用。
在这里

【问题讨论】:

标签: android xamarin.forms navigationbar


【解决方案1】:
[assembly: ExportRenderer(typeof(NavigationPage), typeof(CustomMapRenderer))]
namespace XamarinFormsMaps.Droid
{
    public class CustomMapRenderer : NavigationPageRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<NavigationPage> e)
        {
            base.OnElementChanged(e);
            var bar = (Android.Support.V7.Widget.Toolbar)typeof(NavigationPageRenderer)
            .GetField("_toolbar", BindingFlags.NonPublic | BindingFlags.Instance)
            .GetValue(this);
            bar.SetLogo(Resource.Drawable.icon);
        }
    }
}

试试这个!

【讨论】:

  • 你能提供我必须为此代码导入的参考名称吗?
  • 您在使用 FormsAppCompatActivity 吗?如果是这样,那么您只需复制粘贴代码并将命名空间单独更改为您的项目命名空间,这应该可以工作。
  • var bar = (Android.Support.V7.Widget.Toolbar)typeof(NavigationPageRenderer) .GetField("_toolbar", BindingFlags.NonPublic) .GetValue(this);在这一行,visual studio 向我显示一个错误 “System.NullReferenceException:对象引用未设置为对象的实例。” 而且我不知道什么是 FormsAppCompactActivity.. 而且我没有设置到目前为止的任何图标..您可以在我的问题截图中看到它...
  • 很抱歉,我使用我的扩展库进行可能导致问题的反射,我已经更新了我认为现在应该修复它的代码。
【解决方案2】:

我个人没有使用它,但我猜你正在寻找这个:

NavigationPage.SetTitleIcon (this, "image.png");

这将在 Xamarin Forms 中设置标题图标。 如果你想改变后退按钮的图标,hamalaiv给你this链接

【讨论】:

  • 我试过 NavigationPage.SetTitleIcon 但我不明白把这段代码放在哪里......而且也不明白如何把图像的路径放在代码中......我也试过那个链接建议您提供了哪一个但它不起作用我不知道是什么问题..但是您可以在我的问题的第二个屏幕截图中看到...
【解决方案3】:

谢谢迪尔玛。

它对我有用。 使用 Xamarin.Forms 2.5,我将构造函数更改为

public CustomMapRender(Context context) : base(context)

避免警告过时的构造函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2018-11-09
    • 2018-04-17
    相关资源
    最近更新 更多