带有格式文本的AutoSize标签在Android上不起作用

问题描述

我正在尝试在标签中实现autofit选项,即减小标签的字体大小以适合同一行。尝试使用效果自定义渲染器。在iOS上运作良好,但在Android上却无法运作。 根据{{​​3}}博客的说法,该实现在android上不起作用,因为我在Label内使用了格式化文本,而自定义字体不支持。但是,我仍然无法解决问题。有人遇到过这个问题吗?任何建议都会有很大帮助。预先谢谢你。

更新:添加代码段以供参考。

在PCL项目上

<Label> 
    <Label.Effects>
        <effects:AutoSizeLabelEffect />
    </Label.Effects>
    
    <Label.FormattedText>
        <FormattedString>
            <Span   Style="fontfamily1" Text="text1" />
            <Span Style="fontfamily2"   Text="text2" />
        </FormattedString>
    </Label.FormattedText>
</Label>
public class AutoSizeLabelEffect : RoutingEffect
{
    public AutoSizeLabelEffect() : base("XXX.AutoSizeLabelEffect")
    {
    }
}

在Android项目上->效果-> OnAttached方法

protected override void OnAttached()
{
    if(Control is TextView textView)
    {
        var effect = Element
                     .Effects
                     .OfType<AutoSizeLabelEffect>()
                     .FirstOrDefault();
        if(effect != null)
        {
            TextViewCompat.SetAutoSizeTextTypeUniformWithConfiguration(
                textView,effect.MinTextSize,effect.MaxTextSize,autoSizeStepGranularity: 2,(int)ComplexUnitType.Dip);
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)