Xamarin.Forms AbsoluteLayout孩子具有绝对高度和比例宽度

时间:2018-01-15 03:37:32

标签: xamarin xamarin.forms absolutelayout

我正在使用AbsoluteLayout来渲染我的视图,基本上我有一个地图填充视图和一个与AbsoluteLayout底部对齐的按钮

AbsoluteLayout (fill)
|--View (fill)
|--Button (bottom, full-width, 200 height)

以下是我使用proportional values定义布局的代码:

<AbsoluteLayout 
     VerticalOptions="FillAndExpand"
     HorizontalOptions="FillAndExpand">
            <maps:Map 
                AbsoluteLayout.LayoutBounds="0,0,1,1"
                AbsoluteLayout.LayoutFlags="All" /> 
             <Button
                AbsoluteLayout.LayoutBounds="0.5,1,0.5,0.15"
                AbsoluteLayout.LayoutFlags="All" />
             // ... other controls ... //
</AbsoluteLayout>

除了我的按钮具有动态高度(与父高度成比例)之外,它的工作原理非常好。我希望保持静态,只要我有其他样式,只要高度是动态的(例如BorderRadius),它就会变得难看。

我尝试使用absolute values作为按钮,但现在我被限制为以绝对值定义高度和宽度,而我只希望以绝对值定义高度,并且宽度继续采用整个父级宽度跨度。

1 个答案:

答案 0 :(得分:1)

在AbsoluteLayout中,我们可以通过设置AbsoluteLayout的LayoutFlagsAs来确定哪四个属性成比例或绝对(静态)。因此,正如@DavidS所提到的,你可以将Button的高度设置为静态(例如50):

<AbsoluteLayout 
   VerticalOptions="FillAndExpand"
   HorizontalOptions="FillAndExpand">
            <maps:Map 
                AbsoluteLayout.LayoutBounds="0,0,1,1"
                AbsoluteLayout.LayoutFlags="All" /> 
             <Button
                AbsoluteLayout.LayoutBounds="0.5,1,0.5,50"
                AbsoluteLayout.LayoutFlags="PositionProportional,WidthPropor‌​tional" />
             // ... other controls ... //
</AbsoluteLayout>