我想在Xamarin.Forms中更改控件的大小,并在控件后面的代码中添加一些事件。
特别是,当设备的方向发生变化时,我想更改StackLayout的大小。
现在,我已经这样做了(但它不起作用):
private void SettingsPage_OnSizeChanged(object sender, EventArgs e)
{
var isPortrait = UIHelpers.IsPortrait(this);
if (isPortrait)
RemoteServerSL.WidthRequest = RemoteServerSL.ParentView.Width;
else
{
RemoteServerSL.WidthRequest = RemoteServerSL.ParentView.Width/2;
}
this.UpdateChildrenLayout();
this.ForceLayout();
RemoteServerSL.ForceLayout();
}
如果我处于横向模式,目的是将StackLayout的宽度更改为parentWidth。
我该如何处理?
BTW。我现在在Android上工作。
答案 0 :(得分:0)
您应该使用OnSizeAllocated方法覆盖来检测方向更改;
double previousWidth;
double previousHeight;
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
if (previousWidth != width || previousHeight != height)
{
previousWidth = width;
previousHeight = height;
if (width > height)
{
// landscape mode
}
else
{
// portrait mode
}
}
}