Xamarin формирует относительную позицию макета stacklayout внизу

Я хотел бы разместить Stacklayout внизу поверх изображения, используя относительный макет, используя формы Xamarin, используя только xaml. Xaml примерно так выглядит.

<RelativeLayout>
    <Image />
    <StackLayout Orientation="Horizontal">
        <Label Text="Dark Mode" />
        <Switch />
        <Label Text="Light Mode" />
    </StackLayout>
</RelativeLayout>

Какие ограничения X и Y должны иметь мой StackLayout, чтобы он располагался сверху и снизу изображения. Также было добавлено изображение, описывающее ожидаемый результат.

Ожидается:  RelativeLayout

Я попытался передать RelativeLayout.XConstraints и RelativeLayout.YConstraints как изображению, так и стеку, но не смог понять, какие значения использовать для получения желаемого результата.


person Mohammed Aamir K    schedule 21.03.2017    source источник
comment
Вы можете использовать Grid вместо RelativeLayout.   -  person Yehor Hromadskyi    schedule 21.03.2017
comment
@EgorGromadskiy Я уже пробовал этот подход, но мое изображение не растягивается внутри сетки, даже если для параметра Aspect установлено значение AspectFill.   -  person Mohammed Aamir K    schedule 21.03.2017


Ответы (1)


У вас может быть StackLayout по всему изображению и внутри него другой StackLayout, который будет размещен внизу:

<RelativeLayout>
  <Image Aspect="AspectFill"
         RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width}"
         RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height}"/>
  <StackLayout
         RelativeLayout.WidthConstraint="{ConstraintExpression Type=RelativeToParent, Property=Width}"
         RelativeLayout.HeightConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height}">
      <StackLayout Orientation="Horizontal" VerticalOptions="EndAndExpand" HorizontalOptions="Center">
          <Label Text="Dark Mode" />
          <Switch />
          <Label Text="Light Mode" />
      </StackLayout>
  </StackLayout>
person Uros    schedule 21.03.2017
comment
Это не очень хороший подход, потому что вы теряете, например, такие события, как scrollView на карте. - person Stefan0309; 24.06.2018