Как изменить позицию или размер представления в относительной компоновке во время выполнения в xamarin.forms - PullRequest
0 голосов
/ 05 марта 2019

Я добавил метку к относительной компоновке, установив все ограничения.

Ниже приведен мой код для этого.

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;
    }));

, и он отлично работает.

Теперь я хочу динамически изменить эту метку (textLabel) X Constraint и Width Constraint.Например, из приведенного выше кода X Constraint равен sibling.Width * 0.55, а ширина равна sibling.Width * .45, затем необходимо изменить на X как sibling.Width * 0.55 + 10, а ширина равна sibling.Width * .45 - 50.Как это сделать?

Я предполагаю, что это можно сделать, удалив метку для относительной разметки и снова добавив ее в относительную разметку с новым ограничением.Но я думаю, что для этого найдется лучшее решение.

1 Ответ

0 голосов
/ 06 марта 2019

Как комментарий @ LeoZhu-MSFT, он отлично работает для меня.Вот как я исправил проблему

Для моего вопроса

Теперь я хочу динамически изменить эту метку (textLabel) X Constraint и Width Constraint.Например, из приведенного выше кода X Constraint - это sibling.Width * 0.55, а width - sibling.Width * .45, затем необходимо изменить на X как sibling.Width * 0.55 + 10, а width - sibling.Width * .45 - 50.Как это сделать?

Чтобы изменить ограничение 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 RelativeLayout.SetXConstraint => https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.relativelayout.setxconstraint?view=xamarin-forms

...