У меня есть странная проблема с RelativeLayouts, вложенным в StackLayout, кажется, что StackLayout вычисляет ширину своих элементов, должен использовать ширину RelativeLayout, а затем RelativeLayout снова вычисляет ее. Это приводит к тому, что дочернее управление представляет собой квадрат относительной ширины, но следующие элементы управления помещаются как по относительной ширине.
Является ли это ошибкой или я делаю что-то неправильно?
Пример
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage x:Class="MyClass"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
>
<StackLayout Orientation="Horizontal" BackgroundColor="Blue">
<RelativeLayout>
<ContentView BackgroundColor="Red"
RelativeLayout.XConstraint=
"{ConstraintExpression Type=RelativeToParent,
Property=Width,
Factor=0}"
RelativeLayout.WidthConstraint=
"{ConstraintExpression Type=RelativeToParent,
Property=Width,
Factor=0.707106}"
RelativeLayout.YConstraint=
"{ConstraintExpression Type=RelativeToParent,
Property=Height,
Factor=0}"
RelativeLayout.HeightConstraint=
"{ConstraintExpression Type=RelativeToParent,
Property=Height,
Factor=1}">
</ContentView>
</RelativeLayout>
<RelativeLayout>
<ContentView BackgroundColor="Green"
RelativeLayout.XConstraint=
"{ConstraintExpression Type=RelativeToParent,
Property=Width,
Factor=0}"
RelativeLayout.WidthConstraint=
"{ConstraintExpression Type=RelativeToParent,
Property=Width,
Factor=0.5}"
RelativeLayout.YConstraint=
"{ConstraintExpression Type=RelativeToParent,
Property=Height,
Factor=0}"
RelativeLayout.HeightConstraint=
"{ConstraintExpression Type=RelativeToParent,
Property=Height,
Factor=1}">
</ContentView>
</RelativeLayout>
</StackLayout>
</ContentPage>