如何确保StackLayout至少为最小高度?

时间:2018-08-26 11:19:14

标签: xamarin xamarin.forms

我在代码中尝试过。

<StackLayout 
   HorizontalOptions="FillAndExpand" 
   Spacing="0" 
   MinimumHeightRequest="50">
   <StackLayout Margin="20, 6, 20, 8" 
      HorizontalOptions="FillAndExpand" 
      VerticalOptions="FillAndExpand" 
      Spacing="0">
      <Label Text="ABC" 
         HorizontalOptions="Start" 
         VerticalOptions="StartAndExpand" />
   </StackLayout>
</StackLayout>

但是对于诸如ABC之类的小文字,高度不等于50。是否可以通过某种方法确保高度最小为50?

3 个答案:

答案 0 :(得分:4)

您可以尝试以下方法:

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

    <StackLayout Grid.Row="0" HeightRequest="50"/>
</Grid>

我正在我的应用程序中执行此操作,并且工作正常。您将RowDefinition设置为Auto,那么它将恰好适合您的HeightRequest。

答案 1 :(得分:2)

在以下forum

上中继ShawnCastrianni.5092

阅读API文档中的注释后,我看到以下内容:

  

“ MinimumHeightRequest用于覆盖对的调用结果   VisualElement.GetSizeRequest(double,double)通过设置最小值   高度属性。这将导致溢出处理以缩小此元素   在没有最小尺寸的元素之前达到其最小高度   设置。”

     

我猜这与您所说的杰森相符。因此,我认为每个人   将被名称MinimumHeightRequest抛出。我比较喜欢   说 OverflowHeightRequest 以避免任何混乱。

名称本身具有误导性。您必须创建自定义解决方案才能解决问题

答案 2 :(得分:0)

您可以尝试设置HeightRequest=50并测量标签文本的高度。使用this source中的ITextMeter,如果文本高度大于50,则将HeightRequest设置为文本高度。