2017-04-21 68 views
2

我想设置页面图标。下面是PCL的App类。如何在Xamarin Forms中设置页面图标?

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实现自定义渲染器。 NavigationPage设置为MainPage属性为App类的PCL。

我将DroidNavigationRenderer类创建为Android项目。

[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始终返回为空。 我做错了什么,以及如何解决它?

回答

0

在你的ContentPage,你有Icon财产。

您可以设置它这样

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

它不工作。我简化了我的'App'类到'this.MainPage = new ContentPage {Icon = Device.OnPlatform(“Menu”,“icon.png”,“Assets/Icons/reload.png”),BackgroundImage =“lightWood.png” };'也是行不通的。我不知道是什么问题。也许我的自定义图标影响它。它是'png'图片(52x72px)。它位于'MyProject/Resources/drawable/icon.png'中,但会显示背景图像。 –

+0

我想你需要有NavigationPage才能显示图标。 – hamalaiv

+0

嗨@JosephKatzman:你能做到吗? 我搜索的方式只能在一个页面上用SetTitleIcon()显示一个标志。 这在iOS上正常工作,但在Android上:徽标显示在每个页面上... –

相关问题