2016-04-25 8 views
0

私のアプリケーションのカスタムフォントでfontfamillyを変更したいと思います。私のアプリケーションのフォントをXamarinフォームで変更する(すべてのラベル/リストビュー...)

Xamarinのドキュメントでは、1つのラベルだけfontfamillyを変更できますが、私のアプリケーション全体では変更できません。

私はAndroidとIOSのXamarinフォームで動作します。

私は私のフォントを変更する必要があります。-Listviews -buttons -label

は、アプリ内のすべての要素に変更を適用するGlobal Styleを使用することができますあなたの

答えて

1

ありがとうございます。あなたがデフォルトのレンダリングを上書きすることができますAndroidの

<Label FontFamily="Arial" Text="Hi there" /> 

:あなたが意図したようにあなたは、XAMLコードを使用することができます

<Application xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Styles.App"> 
    <Application.Resources> 
     <ResourceDictionary> 
      <Style TargetType="Label"> 
       <Setter Property="FontFamily" Value="sans-serif" /> 
       <Setter Property="FontSize" Value="12" /> 
      </Style> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 
+0

Fontの例がありますか? –

+0

私の最後の編集を参照 – Jason

+0

ありがとうございました。そして、私はカスタムフォントを使用したいですか?このように:https://www.behance.net/gallery/13756975/ADAMCG-PRO-Free-Typeface –

1

この方法:すべてのラベル要素のフォントを変更するには、これを行うことができますあなたが必要とするすべてのビュー。 Labelの例を次に示します。あなたはリストビューとボタンのために同じことをすることができます。

[assembly: ExportRenderer (typeof (Label), typeof (MyLabelRenderer))] 
namespace MyApp.Droid 
{ 
    public class MyLabelRenderer : LabelRenderer 
    { 
     protected override void OnElementChanged(ElementChangedEventArgs<Label> e) 
     { 
      base.OnElementChanged(e); 

      if (!String.IsNullOrEmpty(Element.FontFamily)) 
       Control.Typeface = Typeface.CreateFromAsset(Forms.Context.Assets, "Fonts/" + Element.FontFamily + ".otf"); 
     } 
    } 
} 

もちろん、カスタムフォントを埋め込んだ場所にマップする必要があります。私の場合アセット/フォント/ Arial.otf(ビルドアクション:AndroidAsset)

は、iOSあなたはResourcesフォルダに追加する必要があります。リソース/ Arial.otf(ビルドアクション:BundleResource)を、それが上記のXAMLコードで動作するはずです。

関連する問題