【问题标题】:Auto font size label Xamarin.Forms自动字体大小标签 Xamarin.Forms
【发布时间】:2021-10-04 02:58:07
【问题描述】:

我正在寻找一种为标签创建渲染的方法。我需要显示一些信息(例如:条形码编号)我需要它以适合标签保留空间

我想显示最大字体大小的信息可以放在一行中。如果需要,我需要自动调整文本大小

我阅读了一些关于 Xamarin 上自动调整文本大小的博客,但所有解决方案看起来都很复杂且过时。

我想问一下是否有人有一些代码或一些更新的想法来解决这个功能,谢谢

【问题讨论】:

  • 除非有人制作了一个可以正常工作的包,否则我认为这会很复杂。
  • 可以吗?

标签: c# .net xamarin xamarin.forms


【解决方案1】:

您可以尝试在 Android 和 ios 上使用 textview.SetAutoSizeTextTypeWithDefaults(AutoSizeTextType.Uniform) 和 uilabel.AdjustsFontSizeToFitWidth = true。

安卓版

在您的自定义渲染器中:

class AutoFitLabel:LabelRenderer
{
    public AutoFitLabel(Context context) : base(context)
    {

    }

    protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
    {
        base.OnElementChanged(e);
        Control.SetAutoSizeTextTypeWithDefaults(AutoSizeTextType.Uniform);
    }
}

对于 iOS:

public class AutoFitLabel: LabelRenderer
{

    protected override void OnElementChanged (
        ElementChangedEventArgs<Label> e)
    {
        base.OnElementChanged (e);

        var label = Control as UILabel;
        if (label != null)
        {
            label.AdjustsFontSizeToFitWidth = true;             
        }
    }
}   

并在您的表单中调用 xaml:

<Label HeightRequest="80" HorizontalOptions="FillAndExpand" MaxLines="1"
               Text="This Label hasset Height to 80">
</Label>  

【讨论】:

  • 感谢 Leo,抱歉耽误了我的假期。如果它对我有用,我会在这周检查它
  • 很好的解决方案,谢谢。对于较旧的 Android 版本,只需使用它来避免错误 TextViewCompat.SetAutoSizeTextTypeWithDefaults(this.Control, TextViewCompat.AutoSizeTextTypeUniform);
猜你喜欢
  • 2012-09-12
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 2019-04-06
  • 2019-11-13
  • 1970-01-01
  • 2020-05-17
  • 2016-11-11
相关资源
最近更新 更多