私はラベルのフォントを変更したいとしましょう。それは私がそのような何かを記述する必要がありますことを意味しますカスタムレンダラを特定のレイアウトにのみ追加するにはどうすればよいですか?
[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;
}
}
}
ただし、プロジェクトにすべてのラベルが指定したフォントでレンダリングするようになりますと付け加えました。特定のラベルだけをそのフォントでレンダリングするにはどうすればよいですか?
ラベルから継承し、継承されたクラスにレンダラーを追加して、その特定のクラスのインスタンスにのみ適用し、それを指定されたラベルにのみ適用するのが解決策です。したがって、私の質問は2つの部分から成り立っています:(1)私が正しい方法を記述し、それがうまくいく方法であり、そうでない場合、(2)正しい方法は何ですか?
申し訳ありませんが、私は困惑しています。私が提供したソリューションが正しいと言っていますか? – nicks
@NikaGamkrelidzeいいえ、Labelクラスを継承して使用する必要があります。私はより明快に私の答えを更新します:)実際に言ったのは –
です。多分私は自分自身を正しく表現していないかもしれません。 – nicks