>

Fontawesome으로 Android에서 작동하는 Custom 렌더러가 있습니다. UWP에서 멋진 글꼴 사용 가이드를 따르고 있습니다. UWP에서 Fontawesome을 사용하려면 사용자 정의 레이블 유형을 사용하십시오.

public class FontAwesomeLabel: Xamarin.Forms.Label    {
    public FontAwesomeLabel()        {
        switch (Device.RuntimePlatform)
      {
           case Device.UWP:
                FontFamily = @"/Assets/FontAwesome.otf#FontAwesome";
                break;
        }
    }
}

글꼴
 
ttf와 otf로로드되었습니다. 두 가지 유형을 모두 시도했습니다. Assest 글꼴에는 "Content"빌드 조치가 있습니다.

mainView.Children.Add( new FontAwesomeLabel()
      {Text = FaConstPool.FASearch ,FontSize = 40});
public static string FASearch = "\uf002";

UWP가 아닌 Android에서만 작동합니다

Android의 경우 예상되는 Fontawesome 아이콘이 아닌 이상한 상자가 표시됩니다.

내가 잘못한 아이디어는?

  • 답변 # 1

    이 문제에 대한 해결책은 UWP에있는 것으로 나타났습니다. 올바른 글꼴 모음 이름을 사용하십시오.  Font Awesome 5 무료 솔리드 "FontAwesome"뿐만 아니라

    // FontFamily = @"/Assets/FontAwesome.otf#FontAwesome"; // incorrect font family name
        FontFamily = @"/Assets/Fonts/FontAwesome.otf#Font Awesome 5 Free Solid";
    
    

    세부 사항에 관심이있는 사람 :
    내부 글꼴 이름과 글꼴 패밀리 이름을 확인하기 위해 글꼴 편집기를 다운로드했습니다. 유사하거나 오래된 글꼴의 값을 사용한 블로그 게시물을 코드 복사하는 실수를했습니다. 실제 콘텐츠는 이미지를 참조하십시오.

    작동해야하는 두 가지 유형의 솔루션이 있습니다.
    1) 공유 코드 /.netStandard Common 프로젝트의 사용자 정의 컨트롤.
    2) 커스텀 렌더러

    솔루션 1 : 맞춤 라벨

    public class FontAwesomeLabel: Xamarin.Forms.Label
    {
        public FontAwesomeLabel()
        {
            switch (Device.RuntimePlatform)
            {
               case Device.UWP:
                 // make sure the correct font family name is used. Check in a font editor
                   this.FontFamily = @"/Assets/Fonts/FontAwesome.otf#Font Awesome 5 Free Solid";
                    break;
            }
        }
    }
    
    

    솔루션 2 : 표준 컨트롤의 고객 렌더러

    [assembly: ExportRenderer(typeof(Label), typeof(FontAwesomeLabelRenderer))]
    namespace Oxando.UWP.CustomRenderers
    {
    public class FontAwesomeLabelRenderer : LabelRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
        {
            base.OnElementChanged(e);
            if (Control != null)
            {
                // on UWP be sure use the Font Family name.
                // get a font editor and check the name, if it doesnt match UWP wont load it
                if (FontAwesomeUtil.CheckIsFA(e.NewElement.Text))
                {
                    Control.FontFamily = new FontFamily("/Assets/Fonts/FontAwesome.otf#Font Awesome 5 Free Solid");
                }
            }
        }
    }
    internal static class FontAwesomeUtil
    {
        public static bool CheckIsFA(string text)
        {
            if (text.Length == 0) return false;
            if (text.Length > 1 || text[0] < 0xf000) return false;
            return true;
        }
    }
    
    

    }

    글꼴 편집기에 표시된 실제 내부 이름

  • 답변 # 2

    글꼴을 추가하는 올바른 경로 UWP는 /Assets/Fonts/FontAwesome.ttf#FontAwesome 입니다  그것은 당신이 Fonts 를 추가 해야하는 것 같습니다  폴더.

    이것처럼 :

    또한 Iconize 플러그인을 사용하여이 답변을 확인할 수 있습니다 :

    XAML/C #에서 멋진 글꼴 모양을 표시하는 방법

관련 자료

  • 이전 matlab에서 Excel 파일을 열고 코드를 실행 한 다음 다음 파일로 이동하여 모든 파일이 처리 될 때까지 반복하는 방법은 무엇입니까?
  • 다음 python - 파이썬 - modulenotfounderror : 'pyprojcrs'라는 모듈이 없습니다