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,WidthPropor‌​tional" />
             // ... other controls ... //
</AbsoluteLayout>
Другие вопросы по тегам