【问题标题】:How to position element at the bottom of a screen using RelativeLayout's constraints?如何使用 RelativeLayout 的约束将元素定位在屏幕底部?
【发布时间】:2016-08-05 11:24:32
【问题描述】:

如何使用RelativeLayout 的约束将元素定位在屏幕底部?目前,我正在使用此代码:

<Image x:Name="img" Opacity="1"
                VerticalOptions="EndAndExpand"
                RelativeLayout.WidthConstraint=
                  "{ConstraintExpression Type=RelativeToParent, Property=Width}"
                RelativeLayout.HeightConstraint=
                  "{ConstraintExpression Type=RelativeToParent, Property=Height}"/>

要将图片设置为背景,但我需要它从底部开始,因此我需要将它定位在底部。我该怎么做?我在互联网上没有找到任何这样的例子。提前致谢!

【问题讨论】:

    标签: c# xaml xamarin xamarin.forms


    【解决方案1】:

    您可以使用 RelativeView 作为您的容器。 在水平选项和垂直选项中都设置为 FillAndExpand。 所以现在你的屏幕尺寸就是你的相对布局的尺寸。

    现在你有一个从左下角开始的全宽图像:

    <Image x:Name="img" Opacity="1"
                    VerticalOptions="EndAndExpand"
                    RelativeLayout.WidthConstraint=
                      "{ConstraintExpression Type=RelativeToParent, Property=Width}"
                    RelativeLayout.HeightConstraint=
                      "{ConstraintExpression Type=RelativeToParent, Property=Height, Factor=0.25}"
                    RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, Property=Height, Factor=0.75}"/>
    

    如果您的图像尺寸小于屏幕尺寸,您也可以设置纵横比。

    Aspect - 如何在显示的范围内调整图像大小 内(无论是拉伸、裁剪还是信箱)。

    Aspect 决定如何缩放图像以适应显示区域:

    • 填充 - 拉伸图像以完全准确地填充显示区域。这可能会导致图像失真。
    • AspectFill - 裁剪图像,使其填充显示区域,同时保留外观(即不失真)。
    • AspectFit - 对图像进行信箱处理(如果需要),以便整个 图像适合显示区域,并添加了空白区域 顶部/底部或侧面取决于图像是宽还是 高。

    【讨论】:

    • @NikaGamkrelidze - 使用纵横比。
    • 我会试试,但是宽度限制不是应该解决这个问题吗?
    • 不,请通读 Aspect 的文档。宽度约束设置布局边界
    • 它会拉伸边界,但你需要指定你需要对里面加载的图像做什么。您尝试通过为父子布局设置不同的背景颜色
    • 你似乎知道你在说什么!我会尝试您的解决方案,并会尽快接受您的回答。谢谢!
    【解决方案2】:

    您可以设置图像的 X 位置(和/或 Y 位置),相对于您的父级(就像 with 或 height 一样)。我使用以下代码在屏幕右下角放置了一个按钮(宽度和高度为 60):

    <ContentView RelativeLayout.XConstraint="{ConstraintExpression
                          Type=RelativeToParent, Property=Width, Constant=-70}"
                 RelativeLayout.YConstraint="{ConstraintExpression
                          Type=RelativeToParent, Property=Height, Constant=-70}">
        <Button />
    </ContentView>
    

    您可以在Xamarin Documentation找到更多详细信息。

    【讨论】:

    • 是的,但我希望它能够适应不同的屏幕尺寸。这可能吗?
    • 也许我误会了你.. 但是在 relativelayout 的约束下,你指的是元素的宽度和高度(不取决于屏幕大小)。所以,这应该有效(至少在我的脑海中)。否则,请更新您的问题以阐明您想要什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 2014-11-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多