代码之家  ›  专栏  ›  技术社区  ›  gowtham T

如何在运行时更改视图在相对布局中的位置香豆素.forms

  •  0
  • gowtham T  · 技术社区  · 5 年前

    我所做的是通过设置“所有约束”将标签添加到相对布局中。

    下面是我的代码。

    relativeLayout.Children.Add(textLabel, Constraint.RelativeToView(innerBorderBox, (parent, sibling) =>
        {
            return sibling.Width * 0.55;
        }), Constraint.RelativeToView(innerBorderBox, (parent, sibling) =>
        {
            return sibling.Y;
        }), Constraint.RelativeToView(innerBorderBox, (parent, sibling) =>
        {
            return sibling.Width * .45;
        }), Constraint.RelativeToView(innerBorderBox, (parent, sibling) =>
        {
            return sibling.Height;
        }));
    

    它工作得很好。

    现在我想动态更改label(textLabel)X约束和宽度约束。例如,从上面的代码X约束是 sibling.Width * 0.55 宽度是 sibling.Width * .45 ,然后需要更改为X作为 sibling.Width * 0.55 + 10 宽度是 sibling.Width * .45 - 50 . 怎么做?

    我的猜测是,这可以通过移除相对布局的标签来完成,并使用新的约束再次添加到相对布局中。但我认为会有更好的解决办法。

    0 回复  |  直到 5 年前
        1
  •  1
  •   gowtham T    5 年前

    正如@LeoZhu MSFT评论的那样,它对我非常有效。下面是我如何解决这个问题

    对于我的问题,

    现在我想更改label(textLabel)X约束和宽度 动态约束。例如,从上面的代码X约束 是兄弟。宽度*0.55宽度为兄弟。宽度*.45,然后需要 更改为X作为兄弟。宽度*0.55+10宽度为兄弟。宽度*

    更改X约束

     RelativeLayout.SetXConstraint(textLabel, Constraint.RelativeToView(innerBorderBox, (parent, sibling) =>
     {
        return sibling.Width * 0.55 + 10;
     }));
    

    更改宽度约束的步骤

     RelativeLayout.SetWidthConstraint(textLabel, Constraint.RelativeToView(innerBorderBox, (parent, sibling) =>
     {
        return sibling.Width * .45 - 50;
     }));
    

    RelativeLayout.SetWidthConstraint=> https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.relativelayout.setwidthconstraint?view=xamarin-forms https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.relativelayout.setxconstraint?view=xamarin-forms

    推荐文章