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

Ale*_*akh 1 absolutelayout xamarin xamarin.forms

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

AbsoluteLayout (fill)
|--View (fill)
|--Button (bottom, full-width, 200 height)
Run Code Online (Sandbox Code Playgroud)

这是我的代码,它使用比例值来定义布局:

<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>
Run Code Online (Sandbox Code Playgroud)

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

我试图为按钮使用绝对值,但现在我被限制以绝对值定义高度和宽度,而我只想以绝对值定义高度,而宽度继续采用整个父宽度跨度。

Vah*_*hir 5

在 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>
Run Code Online (Sandbox Code Playgroud)