Xamarin 以编程方式在底部形成垂直对齐图像

Posted

技术标签:

【中文标题】Xamarin 以编程方式在底部形成垂直对齐图像【英文标题】:Xamarin Forms vertical align image at bottom programmatically 【发布时间】:2014-07-20 17:57:44 【问题描述】:

在(相对)新的 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
;

【问题讨论】:

【参考方案1】:

在 Xamarin Studio 中的程序集浏览器中,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.RelativeToParentConstraint.RelativeToView 在简单的情况下很有用,表达式树可以解决任意布局问题。

【讨论】:

谢谢,这正在工作,它现在也在iosapi.xamarin.com/?link=T%3aXamarin.Forms.RelativeLayout的文档中

以上是关于Xamarin 以编程方式在底部形成垂直对齐图像的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在顶部和底部的垂直线性布局中设置一个视图?

Bootstrap 3 - 导航栏内容的垂直对齐

Bootstrap 3底部垂直对齐图像并链接与链接拉右

仅在高度不同时将图像垂直对齐到画廊底部

Xamarin Forms 将不同字体大小的标签垂直对齐到同一基线

VStack中不同的垂直对齐方式