我在iOS上使用HorizontalTextAlignment="Center"
时遇到问题,因为它在Android上运行正常。问题是它没有按照预期将句子正确地包装到下一行。
这是我的结果:
代码:
<Grid HorizontalOptions="CenterAndExpand" VerticalOptions="Center" Grid.Row="3">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Text="{Binding lblItem}"
TextColor="#BCBCBC"
FontFamily="Calibri"
Grid.Row="0"
Grid.Column="0"
HorizontalTextAlignment="Center"
VerticalTextAlignment="Center"
HorizontalOptions="Center">
<Label.Margin>
<OnIdiom x:TypeArguments="Thickness">
<OnIdiom.Tablet>
<OnPlatform x:TypeArguments="Thickness" iOS="0,5,0,0" Android="0,5,0,0" WinPhone="0,0,0,0"/>
</OnIdiom.Tablet>
<OnIdiom.Phone>
<OnPlatform x:TypeArguments="Thickness" iOS="0,0,0,0" Android="0,0,0,0" WinPhone="0,0,0,0"/>
</OnIdiom.Phone>
</OnIdiom>
</Label.Margin>
</Label>
</Grid>
如何正确使用HorizontalTextAlignment="Center"
在布局中正确包装?
答案 0 :(得分:3)
为了换行文字,您必须将Label.LineBreakMode
属性设置为WordWrap
(请参阅here和here)。
<Grid HorizontalOptions="CenterAndExpand" VerticalOptions="Center" Grid.Row="3">
<!-- ... -->
<Label Text="{Binding lblItem}"
LineBreakMode="WordWrap"
HorizontalTextAlignment="Center"
VerticalTextAlignment="Center"
HorizontalOptions="Center">
<!-- ... -->
</Label>
</Grid>
这应该会正确破坏文本。
也许您必须将HorizontalOptions
设置为Fill
而不是Center
。
答案 1 :(得分:0)
我已经解决了这个问题,如果你绑定了Label的文本,看起来像标签Horizontal/Vertical.TextAlignment
在iOS上有一个错误。为了解决这个问题,我特意在iOS上为这个标签创建了一个CustomRenderer:
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (e.NewElement == null) return;
var ctrl = (YourLabel)Element;
ctrl.HorizontalTextAlignment = TextAlignment.Center;
ctrl.VerticalTextAlignment = TextAlignment.Center;
}