Xamarin 在底部形成相对布局位置 stacklayout

Posted

技术标签:

【中文标题】Xamarin 在底部形成相对布局位置 stacklayout【英文标题】:Xamarin forms relative layout position stacklayout at bottom 【发布时间】:2017-08-12 16:41:47 【问题描述】:

我想使用仅使用 xaml 的 Xamarin 表单使用相对布局将 Stacklayout 放置在图像顶部的底部。 xaml 看起来很像这样。

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

我的 StackLayout 应该有什么 X 和 Y 约束,以便它位于图像的顶部和底部。还添加了一个描述我期望结果的图像。

预期:

我确实尝试将 RelativeLayout.XConstraintsRelativeLayout.YConstraints 赋予图像和 stacklayout ,但无法弄清楚使用什么值来获取想要的结果。

【问题讨论】:

你可以用Grid代替RelativeLayout @EgorGromadskiy 我确实已经尝试过这种方法,但是即使 Aspect 设置为 AspectFill,我的图像也不会在网格内拉伸。 【参考方案1】:

您可以在整个图片中使用 StackLayout,并在其中放置另一个 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>

【讨论】:

这不是一个很好的方法,因为您会丢失诸如地图上的滚动视图之类的事件。

以上是关于Xamarin 在底部形成相对布局位置 stacklayout的主要内容,如果未能解决你的问题,请参考以下文章

将视图放置在高度为 wrap_content 的相对布局的底部

Xamarin 使用水平堆栈布局形成面包屑

Xamarin表示相对布局尾随空格

android RelativeLayout代码中动态设置相对布局里控件的位置

将 Xamarin 表单中的布局粘贴到底部

在 Xamarin Forms iOS 中出现 ListView 之前,如何将 ListView 滚动位置设置为底部?