2017-04-21 6 views
2

ページアイコンを設定しようとしています。以下のPCLのクラスがAppです。Xamarinフォームでページアイコンを設定する方法は?

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

私は何をしようとしましたか?

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

第2のアプローチです。

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

第3のアプローチ。

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

ファイルicon.pngResources/drawableに位置しています。

最後に、NavigationPageのカスタムレンダラーをXamarinフォームに実装することにしました。 NavigationPageは、MainPageプロパティのPCLのAppに設定されています。

私は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は常にnullとして返されます。 私は間違っていて、それを修正する方法は?

答えて

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()でロゴを表示する方法を1ページだけで検索します。 これはiOSではうまく動作しますが、Androidではロゴが各ページに表示されます... –

関連する問題