Xamarin.Forms AbsoluteLayout дочерний элемент с абсолютной высотой и пропорциональной шириной
Я использую AbsoluteLayout для рендеринга своего вида, по сути, у меня есть заполненный вид карты и кнопка, выровненная по низу AbsoluteLayout
AbsoluteLayout (fill)
|--View (fill)
|--Button (bottom, full-width, 200 height)
Вот мой код, который использует пропорциональные значения для определения макета:
<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
).
Я пытался использовать абсолютные значения для кнопки, но теперь я ограничен, чтобы высоту и ширину определяли в абсолютных значениях, в то время как я хочу, чтобы только абсолютная величина определялась как высота, а ширина продолжала занимать весь родительский интервал ширины.
1 ответ
В AbsoluteLayout мы можем определить, какие четыре свойства должны быть пропорциональными или абсолютными (статическими), установив AbsoluteLayout's LayoutFlagsAs. Итак, как упоминалось в @DavidS, вы можете установить высоту кнопки как статическую (скажем, 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>