比方说,我想更改标签的字体。这意味着我将不得不写这样的东西:
[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 继承并将渲染器添加到该继承的类,因此仅将其应用于该特定类的实例,因此仅将其应用于指定的标签。因此,我的问题由两部分组成:(1)我描述的方式是正确的方式,它会起作用,如果不是,(2)什么是正确的方式?