Samsung Tizen.Net可穿戴,如何动态控制对象字体大小

问题描述 投票:-2回答:1

[当使用包含文本的对象(例如按钮或标签)时,如何动态调整文本的大小以更好地将不同长度的文本保留在可见区域内?

例如,如果LabelCellCircleListView内的CirclePage太长,则文本很容易掉出来:

enter image description here

关于我要寻找的内容,在Android中,我可以为对象提供autoSizeMinTextSize和/或autoSizeMaxTextSize标签,这些标签将根据对象的文本长度自动调整字体大小。这样可以更好地将未知长度的文本保留在屏幕上。

enter image description here

[如何在可穿戴式或任何Tizen.Net应用程序中使用CircularUIButton之类的Label元素或通常使用Xamarin.Forms来做到这一点?

xamarin.forms tizen tizen-wearable-sdk
1个回答
0
投票

研究了一段时间之后,我学会了一些动态调整文本大小的方法。

以中心对齐的Label

PrimaryText = new Label
{
    FontSize = _maxFontSize,
    HorizontalTextAlignment = TextAlignment.Center,
};

[将其添加到布局中可以访问MeasureInvalidated事件:

TextStack = new StackLayout
{
    WidthRequest = _maxWidth,
    Children = { PrimaryText }
};

然后,当文本更改(除其他事项外,事件将触发,您可以在其中测量新文本,将其与堆栈的宽度进行比较,然后调整字体大小,直到文本适合您的布局:

TextStack.MeasureInvalidated += (sender, args) =>
{
    var primaryMeasure = PrimaryText.Measure(PrimaryText.Width, PrimaryText.Height);
    var stackMeasure = TextStack.Measure(TextStack.Width, TextStack.Height);

    if (primaryMeasure.Request.Width > stackMeasure.Request.Width)
    {
        if (PrimaryText.FontSize <= _minFontSize)
            PrimaryText.HorizontalTextAlignment = TextAlignment.Start;
        else
        {
            var fontSize = PrimaryText.FontSize - 2;
            if (fontSize < _minFontSize)
                fontSize = _minFontSize;

            PrimaryText.FontSize = fontSize;
        }
    }
};
© www.soinside.com 2019 - 2024. All rights reserved.