【问题标题】:How to set Icon of Page in Xamarin Forms如何在 Xamarin 表单中设置页面图标
【发布时间】:2017-07-13 20:47:47
【问题描述】:

我尝试在 Xaml 中为我的页面设置图标:

Icon="icon.png

但它不起作用,所以我找到了其他解决方案:How to add an icon in navigation bar for navigation page in xamarin forms for android? 它是自定义渲染和工作:

[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); //how to load other icon, when Page is changing?
        }
    }
}

但我想为其他页面设置其他图标...它的代码为所有页面设置了相同的图标。如何解决?

【问题讨论】:

    标签: c# xamarin xamarin.forms


    【解决方案1】:

    使用以下代码可以在当前导航页面发生更改时通知您。 它是 NavigationPageRenderer 中的一个方法。

        protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (e.PropertyName == "CurrentPage")
            {
                var page = Element.CurrentPage as ContentPage;
                if (page != null)
                {
                    //do what you want.
                }
            }
        }
    

    【讨论】:

    • 您是否尝试在 xaml 中的 NavigationPage 类上设置 Icon 属性?我认为它可能适用于 NavigationPage 实例。
    • 我尝试 NavigationPage.SetTitleIcon、navigationPage.Icon = "icon.png",但不起作用...
    • Hm..那么可能是导航栏不支持它,但它的图标属性仅适用于TabbedPage。如果您使用 TabbedPage,至少该图标会显示在标签栏上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多