将图像添加到Dialog元素

时间:2013-11-20 18:18:04

标签: android xamarin.android xamarin mvvmcross

我想在MvvmCross中使用Droid.Dialog创建我的整个应用程序的UI。更具体地说,设置背景图像,然后将标题图像添加到视图中,以及输入字段和按钮。

我很难尝试将标题图片放入视图中。首先,这是一个线框,解释了标题图片的含义:

wireframe

我设法使用:

设置背景渐变图像
 using (var drawable = Resources.GetDrawable(Resource.Drawable.Backgroud))
            Window.SetBackgroundDrawable(drawable);

然后我尝试使用Cirrious.MvvmCross.Dialog.Droid这样的东西添加标题图片:

var img = new ImageView(this.BaseContext);
img.LayoutParameters = new Gallery.LayoutParams(330, 110);
img.SetImageResource(Resource.Drawable.Header);
Root = new RootElement()
{
    new Section(){new ImageElement(img)}
};

但是,图像在UI中显示为微小斑点。

AXML中执行此操作我会将图像设置如下:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_centerInParent="true"
    android:orientation="vertical">
    <ImageView
        android:layout_width="330dp"
        android:layout_height="110dp"
        android:src="@drawable/Header" />
</LinearLayout>

我基本上不知道如何弄清楚如何将图像放入屏幕顶部的视图并使用正确的尺寸!

非常感谢任何帮助。或者我最好分别使用原生AXML和IB创建视图?

1 个答案:

答案 0 :(得分:0)

如果您查看ImageElement内部的内容以及使用ImageView参数调用ctor时会发生什么,那么您将发现图像缩放为48x44。

https://github.com/MvvmCross/MvvmCross/blob/v3/CrossUI/CrossUI.Droid/Dialog/Elements/ImageElement.cs#L52

private const int dimx = 48;
private const int dimy = 44;

...

private ImageView Scale(ImageView source)
{
    var drawable = (BitmapDrawable) source.Drawable;
    var bitmap = drawable.Bitmap;
    var bMapScaled = Bitmap.CreateScaledBitmap(bitmap, dimx, dimy, true);
    source.SetImageBitmap(bMapScaled);
    return source;
}

所以你有几个选择:

  1. 创建您自己的元素,您可以控制ImageView
  2. 的操作
  3. 通过创建原生Android布局来实现。