【问题标题】:Xamarin Forms relative layout - get a stack layout centred insideXamarin Forms 相对布局 - 获得居中的堆栈布局
【发布时间】:2014-08-24 02:55:08
【问题描述】:

我有一个 Xamarin 表单应用程序,我在其中使用相对布局来非常明确地定位一些元素。我想在相对布局的中间有一个堆栈布局。我使用此代码:

_relativeLayout.Children.Add (
        _stackLayout, 
        Constraint.RelativeToParent(p => (p.Width / 2) - (_stackLayout.Width / 2) ),
        Constraint.RelativeToParent(p => (p.Height/ 2) - (_stackLayout.Height / 2) )

    );

当表单加载时,我没有得到正确的结果。堆栈布局偏向一侧。但是,如果我以一种方式旋转屏幕然后再旋转回来,它看起来很完美。所以我收集到当布局渲染时,堆栈布局的高度和宽度尚未完全计算,但在旋转时这些值是已知的,因此它可以正确渲染。

如何使堆栈布局完全以初始表单加载为中心?

【问题讨论】:

    标签: c# xamarin xamarin.forms


    【解决方案1】:

    您可以使用请求值。检查宽度/高度是否为 -1,在这种情况下它尚未初始化,您应该使用请求值。如果已初始化,则使用它。

            this._relativeLayout.Children.Add(
                this._stackLayout, 
                Constraint.RelativeToParent(p => (p.Width / 2) - 
                    ((this._stackLayout.Width == -1 ? this._stackLayout.WidthRequest : this._stackLayout.Width) / 2)),
                Constraint.RelativeToParent(p => (p.Height / 2) - 
                    ((this._stackLayout.Height == -1 ? this._stackLayout.HeightRequest : this._stackLayout.Height) / 2))
            );
    

    【讨论】:

    • 只要我给我的堆栈布局一个宽度和高度请求,这似乎工作得很好。谢谢。
    • 清除了一个非常重要的困惑!非常感谢,我正在尝试创建一个登录屏幕。我需要在哪里放置“用户名:______(条目元素)”和密码:______(元素)垂直,我无法弄清楚约束,或者它不起作用!任何建议
    • 使用 Xaml 实现类似行为的任何方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    相关资源
    最近更新 更多