【发布时间】:2018-06-23 20:16:06
【问题描述】:
布局如下:
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:views="clr-namespace:Test.Views" x:Class="Test.Views.MainPage">
<StackLayout VerticalOptions="FillAndExpand">
<BoxView Color="Yellow" HeightRequest="25" VerticalOptions="Start"></BoxView>
<RelativeLayout x:Name="mainView" BackgroundColor="Red" VerticalOptions="StartAndExpand">
<BoxView x:Name="boxA" Color="Blue" WidthRequest="50" HeightRequest="50"
RelativeLayout.XConstraint="{Binding BoxAXConstraint}"
RelativeLayout.YConstraint="{Binding BoxAYConstraint}">
</BoxView>
<BoxView x:Name="boxB" Color="Green" WidthRequest="50" HeightRequest="50"
RelativeLayout.XConstraint="{Binding BoxBXConstraint}"
RelativeLayout.YConstraint="{Binding BoxBYConstraint}">
</BoxView>
</RelativeLayout>
</StackLayout>
</ContentPage>
我找不到在 XAML 的相对布局中指定右下角的方法,这就是为什么我将这些约束绑定到代码隐藏中的属性,如下所示:
public partial class MainPage : ContentPage
{
public Constraint BoxAXConstraint { get; set; }
public Constraint BoxAYConstraint { get; set; }
public Constraint BoxBXConstraint { get; set; }
public Constraint BoxBYConstraint { get; set; }
public MainPage()
{
InitializeComponent();
BoxAXConstraint = Constraint.RelativeToParent(parent => mainView.Width - boxA.WidthRequest);
BoxAYConstraint = Constraint.RelativeToParent(parent => 0);
BoxBXConstraint = Constraint.RelativeToParent(parent => mainView.Width - boxB.WidthRequest);
BoxBYConstraint = Constraint.RelativeToParent(parent => mainView.Height - boxB.HeightRequest);
BindingContext = this;
}
}
这是test project,它在 Android 和 iOS 上都重现了该问题。
【问题讨论】:
-
如果是测试项目的错误,请将其作为问题发布到 Xamarin.Forms 存储库:github.com/xamarin/Xamarin.Forms/issues
标签: visual-studio xaml xamarin xamarin.forms