我希望RelativeLayout.XConstraint
使用某些特定于平台的值。而且我想在xaml中使用OnPlatform关键字执行此操作。
我没有运气试过这个,
<RelativeLayout>
<RelativeLayout.XConstraint>
<OnPlatform x:TypeArguments="Constraint" Android="{ConstraintExpression Type=Constant,Constant=6" iOS="{ConstraintExpression Type=Constant,Constant=3}" />
</RelativeLayout.XConstraint>
</RelativeLayout>
并尝试了这个https://forums.xamarin.com/discussion/57281/how-can-i-make-platform-specific-relativelayout-xconstraint-in-xaml,但它显示异常“指定的约束包含一个无法解决的循环”。
x:TypeArguments
RelativeLayout.XConstraint
或其他任何方法都是什么?期待有关此的任何提示/建议。
答案 0 :(得分:3)
您正在将约束应用于RelativeLayout
本身,但约束意在应用于布局的项目,如下所示。
<RelativeLayout>
<Label Text="Foo">
<RelativeLayout.XConstraint>
<OnPlatform x:TypeArguments="Constraint" Android="{ConstraintExpression Type=Constant,Constant=6}" iOS="{ConstraintExpression Type=Constant,Constant=3}" />
</RelativeLayout.XConstraint>
</Label>
</RelativeLayout>
此外,您在第一个}
标记上缺少结束大括号(ConstraintExpression
)。
我对此进行了测试,它在XamlC关闭时工作得很好。 如果您运行的是XF 2.3.3,则可能会遇到https://bugzilla.xamarin.com/show_bug.cgi?id=48242,但存在修复程序(https://github.com/xamarin/Xamarin.Forms/pull/580),并将作为即将发布的服务版本的一部分发布。