#c# #xamarin #xamarin.forms #constraints
#c# #xamarin #xamarin.forms #ограничения
Вопрос:
Что я сделал, так это добавил метку в относительный макет, установив все ограничения.
Ниже приведен мой код для этого.
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;
}));
и это работает отлично.
Теперь я хочу динамически изменять ограничение X метки (textLabel) и ограничение ширины. Например, из приведенного выше кода ограничение X равно sibling.Width * 0.55
, а ширина — sibling.Width * .45
, затем необходимо изменить на X как sibling.Width * 0.55 10
, а ширина — sibling.Width * .45 - 50
. Как это сделать?
Я предполагаю, что это можно сделать, удалив метку для относительного макета и добавив снова в относительный макет с новым ограничением. Но я думаю, что для этого найдется лучшее решение.
Комментарии:
1. Вы пробовали транспонировать?
2. @BradDixon Что такое транспонирование?
3. извините, перевести, а не транспонировать. learn.microsoft.com/en-us/dotnet/api /…
4. Нет, я постараюсь дать вам знать. Я думаю, что это может сработать.
5. Вы пробовали это:
RelativeLayout.SetXConstraint(textLabel,constraintValue)
иRelativeLayout.SetWidthConstraint(textLabel,constraintValue)
Ответ №1:
Как прокомментировал @LeoZhu-MSFT, у меня это работает идеально. Вот как я устранил проблему
На мой вопрос,
Теперь я хочу динамически изменять ограничение X метки (textLabel) и ограничение ширины. Например, из приведенного выше кода ограничение X является родственным.Width * 0.55 и width являются родственными.Ширина * .45, затем необходимо изменить на X как родственный.Ширина * 0,55 10, а ширина — родственная.Ширина * .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://learn.microsoft.com/en-us/dotnet/api/xamarin.forms.relativelayout.setwidthconstraint?view=xamarin-forms RelativeLayout.SetXConstraint => https://learn.microsoft.com/en-us/dotnet/api/xamarin.forms.relativelayout.setxconstraint?view=xamarin-forms