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

时间:2014-05-30 21:28:14

标签: xamarin xamarin.forms

在(相对)新的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 个答案:

答案 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.RelativeToParentConstraint.RelativeToView在简单情况下非常有用,而Expression树将解决任意布局问题。