2017-09-01 81 views
0

我嘗試垂直居中包含文本的multiline Label,該文本可以顯示在1行或2行上。Xamarin.Forms:如何在一個行中居中多標籤?

就目前而言,我無法得到預期的渲染...

我可以有自動延長多標籤,但它是頂部對齊,而不是居中: label is not centered

這是附加的XAML:

<Grid.RowDefinitions> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="0" /> 
</Grid.RowDefinitions> 

<local:MultiLineLabel 
    Grid.Row="0" 
    Grid.Column="1" 
    BackgroundColor="Orange" 
    Text="{ Binding encart_titre }"   
    VerticalTextAlignment="Center" 
    LineBreakMode="TailTruncation" 
    Lines="2" 
    ... 
/> 

我也可以居中的標籤,但在這種情況下,它不會自動擴展: enter image description here

這是附加的XAML:

<Grid.RowDefinitions> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="0" /> 
</Grid.RowDefinitions> 

<local:MultiLineLabel 
    Grid.Row="0" 
    Grid.Column="1" 
    BackgroundColor="Orange" 
    Text="{ Binding encart_titre }"   
    VerticalTextAlignment="Center" 
    LineBreakMode="TailTruncation" 
    Lines="2" 
    VerticalOptions="FillAndExpand" 
    ... 
/> 

你有什麼解釋?我也嘗試添加StackLayound周圍的標籤,但這並沒有改變什麼...

回答

2

爲中心控制的第一選擇是使用VerticalOptions="CenterAndExpand",你有沒有試過,而不是VerticalOptions="FillAndExpand"?關於Xamarin.Forms中的LayoutOptions的Here's more information

所以,這將是垂直居中的正確方法:

<local:MultiLineLabel 
    Grid.Row="0" 
    Grid.Column="1" 
    BackgroundColor="Orange" 
    Text="{ Binding encart_titre }"   
    VerticalTextAlignment="Center" 
    LineBreakMode="TailTruncation" 
    Lines="2" 
    VerticalOptions="CenterAndExpand" <!-- This one here --> 
    ... 
/> 
+0

謝謝它與'VerticalOptions =「CenterAndExpand」' –

+1

只要稍微規範:標籤必須嵌入一個'StackLayout' 'VerticalOptions =「CenterAndExpand」'和'Horizo​​ntalOptions =「CenterAndExpand」'。 –

相關問題