FormattedString中的Span-Elements似乎被修剪

时间:2016-12-12 16:45:25

标签: c# xamarin label xamarin.forms

我正在尝试使用带有格式化文本的Label在视图中放置一些格式化文本(一个印记,以及它的价值)。文本格式按预期工作,但每当我尝试将空格字符添加到格式化文本中的span元素的末尾时,这些字符似乎被修剪。到目前为止,这适用于普通空间,非破坏空间和CR / NL。无论如何,当在一个字符串的中间,没有任何东西被删除。

这使得标签对我来说无法使用(至少对于这个用例),因为我无法正确格式化文本。有什么我错过了吗?我在网络和文档中没有找到任何关于此事的内容。这种方法是完全错误的,还是Xamarin中的一个错误? (就此而言,使用的版本是2.3.2.127)

2 个答案:

答案 0 :(得分:1)

  

这使得标签对我来说无法使用(至少对于这个用例),因为我无法正确格式化文本

为什么要尝试使用尾随空格来实现此格式化并不完全清楚。

您是否尝试在标签周围使用边距或填充?

https://developer.xamarin.com/guides/xamarin-forms/user-interface/layouts/margin-and-padding/

使用空格字符表示元素间距通常不是一种好习惯。

答案 1 :(得分:0)

解决此问题的一个办法是在FormattedString中具有额外的跨度,每个跨度均为单个字母,其TextColor设置为背景。例如,假设您的背景色是白色,则将白色小写字母 l s放在跨度之间:

                <Label>
                    <Label.FormattedText>
                        <FormattedString>
                            <FormattedString.Spans>
                                <Span>You have</Span>
                                <Span TextColor="White">l</Span>
                                <Span Text="{Binding Points}"  d:Text="18"
                                      TextColor="IndianRed"
                                      FontAttributes="Bold"
                                      FontSize="Large" />
                                <Span TextColor="White">l</Span>
                                <Span>points.</Span>
                            </FormattedString.Spans>
                        </FormattedString>
                    </Label.FormattedText>
                </Label>

这显然是一个大错。但是,在Span获得margin或padding属性之前,这似乎是最简单的方法。