在(相对)新的Xamarin表单中,我试图将图像垂直对齐到滚动视图的底部。
这是我的代码,这正是我想要的(对于滚动的大图像)。但是当我的图像小于设备的高度时,它应该对准屏幕的底部,而不是屏幕的中心(可能是默认值)。由于文档(仍然)缺乏,我怎样才能在代码中实现这一点?
return new ContentPage {
Content = new ScrollView {
Orientation = ScrollOrientation.Vertical,
BackgroundColor = Color.Black,
Content = new Image {
Source = ImageSource.FromFile (image)
}
}
};
我已经尝试过这个,但它给出了一个错误,即以下方法或属性之间的调用是不明确的......
RelativeLayout rl = new RelativeLayout ();
rl.Children.Add (new ScrollView {
Orientation = ScrollOrientation.Vertical,
BackgroundColor = Color.Black,
Content = new Image {
Source = ImageSource.FromFile (image)
}
});
return new ContentPage {
Content = rl
};
答案 0 :(得分:5)
在Xamarin Studio的Assembly Browser中,您对Children.Add的选项是:
void Add(T view, Expression<Func<Rectangle>> bounds);
void Add(T view, Expression<Func<double>> x = null, Expression<Func<double>> y = null, Expression<Func<double>> width = null, Expression<Func<double>> height = null);
void Add(T view, Constraint xConstraint = null, Constraint yConstraint = null, Constraint widthConstraint = null, Constraint heightConstraint = null);
其中Expression是System.Linq.Expresssions中的类型。
您收到了一个模糊的调用错误,因为所有这些重载都具有除视图之外的所有参数的默认值。
为了使用Children的对象初始值设定项,您需要传递表达式或约束,例如:
rl.Children.Add (
{
new ScrollView {
Orientation = ScrollOrientation.Vertical,
BackgroundColor = Color.Black,
Content = new Image {
Source = ImageSource.FromFile (image)
}
},
Constraint.Constant(0),
Constraint.Constant(0)
}
)
Constraint.RelativeToParent
和Constraint.RelativeToView
在简单情况下非常有用,而Expression树将解决任意布局问题。