【问题标题】:Font of label changes back to default when label's text changes标签的文本更改时标签的字体恢复为默认值
【发布时间】:2015-06-27 05:35:35
【问题描述】:

我使用自定义渲染器来设置字体。问题是当我更改标签的文本时,字体样式消失了。

提供的是我的自定义渲染器代码。谁能告诉我我做错了什么??

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

        var label = (TextView)Control;
        Typeface font = Typeface.CreateFromAsset (Forms.Context.Assets, "Raleway-Regular.ttf");
        label.Typeface = font;
    }
}
}

更新 #1 这是我的代码共享项目 使用系统; 使用 Xamarin.Forms;

namespace FormsProj
{
public class MyLabel:Label
 {
 }
}

我在哪里使用 MyLabel 的代码

var Thankyoutxt = new MyLabel {
            XAlign = TextAlignment.Center,
            Text = "Thank You",
            VerticalOptions = LayoutOptions.CenterAndExpand,
            HorizontalOptions = LayoutOptions.Center,
            TextColor = Xamarin.Forms.Color.White,
            FontAttributes = FontAttributes.Bold,
            Style = Device.Styles.CaptionStyle,
            FontFamily = ColorandFont.FontName,

        };

单击按钮我将更改文本,到那时字体会变回没有自定义字体..

提前谢谢.. :)

【问题讨论】:

  • 您在哪里更改文本?我只看到更改字体的代码。
  • @JohnOdom 查文本代码就像 label.Text ="Edited"; 我认为问题在于渲染器..
  • 我希望您将代码发布在您更改文本的位置。我已经知道如何更改文本:P。这可能是您调用渲染器的方式的问题。
  • @JohnOdom 对不起 :) 我只是解释说我只做了那一行..
  • “MyLabelRenderer”怎么样?你能展示一下你是如何使用它的吗?

标签: c# xamarin xamarin.forms


【解决方案1】:

您可能还想尝试在渲染器中重置 OnPropertyChangedEvent 的属性。我过去遇到过这个问题,现在已经解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-26
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    相关资源
    最近更新 更多