首页 > 解决方案 > Xamarin Forms 带有标签文本换行和边距的奇怪问题

问题描述

我在 Xamarin.Forms 中的标签上换行时遇到了一个奇怪的问题。正如您在下面的屏幕截图中看到的那样,当我在标签上设置了边距或填充时,文本被截断了。当没有填充/边距时,将显示整个内容。截断内容的实际文本为:

“Ryan,您可以在完成后“结束流”。这个特定的字符长度不会被包装。如果我有更少的字符,它似乎显示得很好,如果我有更多的字符,它显示得很好。

这一切都在网格布局内部,在 ListView 内部。这是创建蓝色框的相关 XAML。

<Grid Grid.Row="0" Margin="10,0" Padding="5" HorizontalOptions="Start" VerticalOptions="FillAndExpand">
      <BoxView BackgroundColor="DeepSkyBlue" CornerRadius="10" HorizontalOptions="FillAndExpand" />
      <Label Margin="10" LineBreakMode="WordWrap" HorizontalTextAlignment="End" Text="{Binding Message}" TextColor="White" FontSize="Small" VerticalTextAlignment="Center" VerticalOptions="FillAndExpand" />
</Grid>

在此处输入图像描述

标签: xamlxamarin.forms

解决方案


Try this. I'm basically doing the same thing you are, just interested if this will work when you put it in your app.

<CollectionView>
    <CollectionView.ItemsSource>
        <x:Array Type="{x:Type x:String}">
            <x:String>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Magni ad reprehenderit eius dolorum, laborum consectetur.</x:String>
            <x:String>This is a test message. Seems like there may be an issue with word wrap.</x:String>
            <x:String>Ryan you can &quot;end stream&quot; whenever you are done.</x:String>
            <x:String>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Iste cumque officiis laboriosam suscipit a corporis soluta obcaecati distinctio delectus, possimus facilis asperiores, amet consequatur quam, deleniti iusto debitis nihil laudantium dicta at!</x:String>
        </x:Array>
    </CollectionView.ItemsSource>
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <Grid Padding="5">
                <BoxView BackgroundColor="DeepSkyBlue" CornerRadius="10" />
                <Label
                    Margin="10"
                    FontSize="Title"
                    HorizontalTextAlignment="End"
                    LineBreakMode="WordWrap"
                    Text="{Binding .}"
                    TextColor="White"
                    VerticalTextAlignment="Center" />
            </Grid>
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>

Here's what I'm getting with this code:

my result


推荐阅读