LabelCustomRenderer 中不可更改的字体大小
Unchangeable font size in LabelCustomRenderer
我为标签创建了自定义渲染器以显示 html 格式的文本。
问题在于,与 Android 不同,IOS 中的文本太小,我找不到更改它的方法。
我的代码
IOS
[assembly:ExportRenderer(typeof(HtmlFormattedLabel), typeof(HtmlFormattedLabelRenderer))]
namespace YmoApp.iOS
{
public class HtmlFormattedLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
var view = (HtmlFormattedLabel)Element;
if (view == null) return;
var attr = new NSAttributedStringDocumentAttributes();
var nsError = new NSError();
attr.DocumentType = NSDocumentType.HTML;
var myHtmlData = NSData.FromString(view.Text, NSStringEncoding.UTF8);
Control.AttributedText = new NSAttributedString(myHtmlData, attr, ref nsError);
}
}
}
Android
[assembly:ExportRenderer(typeof(HtmlFormattedLabel), typeof(HtmlFormattedLabelRenderer))]
namespace YmoApp.Droid
{
public class HtmlFormattedLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
var view = (HtmlFormattedLabel)Element;
if (view == null) return;
Control.SetText(Html.FromHtml(view.Text.ToString()), TextView.BufferType.Spannable);
}
}
}
PCL
var descriptionLabel = new HtmlFormattedLabel()
{
Text = "<http><body style='font-size; 20px'><p style='text-align: justify; font-family: Arial, Helvetica, sans-serif; font-size: 14px'>"
+ _imovel.Anuncio.Descricao + "</p></body></http>",
Margin = new Thickness(20, 0)
};
descriptionLabel.FontSize = 14;
似乎没有任何效果。
我猜你的问题在于将格式化字体大小设置为像素高度。 iOS 非常重视像素值,14 像素的字体大小在视网膜显示器上呈现时最终会非常小。
尝试使用与分辨率无关的字体大小,你应该可以开始了。
这对我来说也很不对:
<body style='font-size; 20px'>
错误在<body style='font-size; 20px'>
。
;
应该替换为 :
。
我为标签创建了自定义渲染器以显示 html 格式的文本。
问题在于,与 Android 不同,IOS 中的文本太小,我找不到更改它的方法。
我的代码
IOS
[assembly:ExportRenderer(typeof(HtmlFormattedLabel), typeof(HtmlFormattedLabelRenderer))]
namespace YmoApp.iOS
{
public class HtmlFormattedLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
var view = (HtmlFormattedLabel)Element;
if (view == null) return;
var attr = new NSAttributedStringDocumentAttributes();
var nsError = new NSError();
attr.DocumentType = NSDocumentType.HTML;
var myHtmlData = NSData.FromString(view.Text, NSStringEncoding.UTF8);
Control.AttributedText = new NSAttributedString(myHtmlData, attr, ref nsError);
}
}
}
Android
[assembly:ExportRenderer(typeof(HtmlFormattedLabel), typeof(HtmlFormattedLabelRenderer))]
namespace YmoApp.Droid
{
public class HtmlFormattedLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
var view = (HtmlFormattedLabel)Element;
if (view == null) return;
Control.SetText(Html.FromHtml(view.Text.ToString()), TextView.BufferType.Spannable);
}
}
}
PCL
var descriptionLabel = new HtmlFormattedLabel()
{
Text = "<http><body style='font-size; 20px'><p style='text-align: justify; font-family: Arial, Helvetica, sans-serif; font-size: 14px'>"
+ _imovel.Anuncio.Descricao + "</p></body></http>",
Margin = new Thickness(20, 0)
};
descriptionLabel.FontSize = 14;
似乎没有任何效果。
我猜你的问题在于将格式化字体大小设置为像素高度。 iOS 非常重视像素值,14 像素的字体大小在视网膜显示器上呈现时最终会非常小。
尝试使用与分辨率无关的字体大小,你应该可以开始了。
这对我来说也很不对:
<body style='font-size; 20px'>
错误在<body style='font-size; 20px'>
。
;
应该替换为 :
。