2017-04-21 2 views
2

페이지 아이콘을 설정하려고합니다. 아래에 App 클래스의 PCL이 있습니다.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.pngResources/drawable에 자리 잡고 있습니다.

마지막으로 Xamarin Forms에서 NavigationPage에 대한 사용자 지정 렌더러를 구현하기로 결정했습니다. NavigationPageMainPage 속성으로 설정되어 App 클래스의 PCL로 설정됩니다.

나는 안드로이드 프로젝트에 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로 반환됩니다. 내가 뭘 잘못하고 그것을 고치는 법?

답변

0

ContentPage에는 Icon 속성이 있습니다.

당신은 그것을 그것은 작동하지 않습니다 이런 식으로

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

을 설정할 수 있습니다. 나는'App.MainPage = new ContentPage {Icon = Device.OnPlatform ("Menu", "icon.png", "Assets/Icons/reload.png"), BackgroundImage = "lightWood.png" };'또한 작동하지 않습니다. 나는 그 문제가 뭔지 모른다. 어쩌면 내 사용자 정의 아이콘이 그것에 영향을 미칠 수 있습니다. 'png' 이미지 (52x72 픽셀)입니다. 그것은 'MyProject/Resources/drawable/icon.png'에 위치해 있습니다.하지만 배경 이미지가 표시됩니다. –

+0

아이콘을 표시하려면 NavigationPage가 있어야한다고 생각합니다. – hamalaiv

+0

안녕하세요 @JosephKatzman : 당신이 관리 할 수 ​​있니? 한 페이지에만 SetTitleIcon()으로 로고를 표시하는 방법을 검색합니다. iOS에서는 잘 작동하지만 Android에서는 로고가 각 페이지에 표시됩니다 ... –

관련 문제