Xamarin。使用循环将视图添加到RelativeLayout

时间:2019-05-04 20:06:57

标签: xamarin relativelayout

我在代码方面遇到一些奇怪的问题(我在这里只写了一些重要的行):

onPostExecute()

此后,我仅看到RelativeLayout中的最后一张图像。即使我将图像数量增加到10个(例如),也没有任何反应-我只能看到LAST图像,但是如果我添加两个或三个具有相同参数但不从数组(Image [])获得的视图,则一切正常。

问题:是否有可能(在xmarin中)使用数组元素动态添加布局视图?如果可能的话-我在做什么错?

2 个答案:

答案 0 :(得分:0)

这是因为您使用的是不带布局参数规则的RelativeLayout将每个后续图像放置在前一个图像下方。并且,如果没有它,图像将彼此堆叠。恰好是您最大的图像是屏幕上放置的最后一个图像,并且遮盖了其他图像。

这是我在Xamarin.Android中使用ImageView数组和适当的LayoutRules展示其正常工作的示例:

  SELECT
        MONTHNAME(birthdatetr) AS Month_of_Birth,
        MONTH(birthdatetr) AS number_of_month_of_birth,
        COUNT(*) AS Total,
(select count(*) FROM tng_people
               WHERE month(birthdatetr) > 0
               GROUP BY month(birthdatetr)
               ORDER BY count(*) DESC
               limit 1) as birthmax
    FROM
        tng_people
    WHERE
        MONTH(birthdatetr) > 0
    GROUP BY
        number_of_month_of_birth
    ORDER BY
        number_of_month_of_birth

输出

Output

希望这会有所帮助!

答案 1 :(得分:0)

这是Android的解决方案。 当然,如果我们使用ImageView,我们将使用.Id字段来生成用于视图识别的唯一ID。

不同的代码,没有LayoutParameter,但是具有单独的变量,在所有手机上均正常工作:

    Image img1, img2, img3, img4;
            img1 = new Image();
            img2 = new Image();
            img3 = new Image();
            img4 = new Image();
            setImageParm(img1, 0, localPathyn);
            setImageParm(img2, 1, localPathyn);
            setImageParm(img3, 2, localPathyn);
            setImageParm(img4, 3, localPathyn);

    void setImageParm( Image im, int i, string localPathyn) {
                im.Aspect = Aspect.AspectFit;
                im.HorizontalOptions = LayoutOptions.Center;
                im.VerticalOptions = LayoutOptions.Center;
                im.Source = ImageSource.FromFile(localPathyn);
                im.HeightRequest = 70; 

                r.Children.Add(im, ()=> new Rectangle(width* i * 0.1f, height* i * 0.1f, 70f, 70f));
    }

我认为Children.Add方法使用x:Name标识,该标识在xamarin代码中无法更改,我们必须分别为每个平台编写此代码吗?