たとえば、ラベルのフォントを変更したいとします。つまり、次のように書く必要があります。
[assembly: ExportRenderer(typeof(Label), typeof(LabelFontRenderer))]
namespace MyApp.Droid
{
public class LabelFontRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
var label = (TextView)Control; // for example
Typeface font = Typeface.CreateFromAsset(Forms.Context.Assets, "Roboto-Regular.ttf"); // font name specified here
label.Typeface = font;
}
}
}
ただし、それをプロジェクトに追加すると、すべてのラベルが指定されたフォントでレンダリングされます。一部の特定のラベルのみをそのフォントでレンダリングしたい場合はどうすればよいですか?
おそらく解決策は、Label から継承し、その継承されたクラスにレンダラーを追加して、その特定のクラスのインスタンスにのみ適用し、指定されたラベルにのみ適用することです。したがって、私の質問は 2 つの部分で構成されています。(1) は、私が説明した正しい方法であり、それは機能しますか? (2) 正しい方法は何ですか?