如何在Xamarin Forms中设置页面图标?

时间:2017-04-21 10:38:27

标签: android xamarin.forms

我试图设置页面图标。下面有App类PCL。

public App()
{
    CustomMainPage mainPage = new CustomMainPage(); 
    NavigationPage rootPage = new NavigationPage(mainPage);
    this.MainPage = rootPage;
}

我试图做什么?

NavigationPage.SetTitleIcon(mainPage, "icon.png");

第二种方法。

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

第三种方法。

NavigationPage.SetTitleIcon(rootPage, "icon.png");

档案icon.png位于Resources/drawable

最后我决定在Xamarin Forms中为NavigationPage实现我的自定义渲染器。 NavigationPageMainPage属性设置为App类PCL。

我在Android项目中创建了DroidNavigationRenderer类。

 [assembly: ExportRenderer(typeof(NavigationPage), typeof(DroidNavigationPageRenderer))]
namespace App1.Droid.DroidRenderers
{
    public class DroidNavigationPageRenderer : NavigationPageRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<NavigationPage> e)
        {
            base.OnElementChanged(e);

            var actionBar = ((Activity)Context).ActionBar;
            actionBar.SetIcon(Resource.Drawable.icon);
        }
    }
}

actionBar始终返回null。 我做错了什么以及如何解决它?

2 个答案:

答案 0 :(得分:0)

ContentPage中,您拥有Icon属性。

您可以这样设置

Icon = Device.OnPlatform("Menu", "ic_fa_bars.png", "Assets/Icons/reload.png");

答案 1 :(得分:0)

您的CustomMainPage类是什么?如果我拥有TabbedPage并设置其子级之一,则可以这样操作:

var navigationPage = new NavigationPage(mainPage);
if (Device.RuntimePlatform == Device.iOS)
{
    navigationPage.Icon = "services.png";
}

希望有帮助