Xamarin.Forms 具有绝对高度和比例宽度的 AbsoluteLayout 子级
Xamarin.Forms AbsoluteLayout child with an absolute height and proportional width
我正在使用 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 作为按钮,但现在我不得不以绝对值定义高度和宽度,而我只希望以绝对值定义高度,而宽度继续采用整个父宽度跨度。
在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,WidthProportional" />
// ... other controls ... //
</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 作为按钮,但现在我不得不以绝对值定义高度和宽度,而我只希望以绝对值定义高度,而宽度继续采用整个父宽度跨度。
在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,WidthProportional" />
// ... other controls ... //
</AbsoluteLayout>