以编程方式在RelativeLayout中定位视图

时间:2012-02-08 20:22:45

标签: android xamarin.android

我希望我的TextView出现在进入GridView的RelativeLayout中的ImageView下面。我试过了:

public override View  GetView(int position, View convertView, ViewGroup parent)
    {
        RelativeLayout rl = new RelativeLayout(context);
        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.FillParent);
        ImageView imageView;
        TextView tv;

        imageView = new ImageView(context);
        imageView.LayoutParameters = new GridView.LayoutParams(250, 250);
        imageView.SetScaleType(ImageView.ScaleType.CenterCrop);
        imageView.SetPadding(8, 8, 8, 8);
        imageView.SetImageResource(thumbIds[position]);
        imageView.Id = position;

        lp.AddRule(LayoutRules.Below, position);
        lp.AddRule(LayoutRules.CenterHorizontal);

        tv = new TextView(context);
        tv.Text = stringIds[position].ToString();
        tv.SetTextSize(Android.Util.ComplexUnitType.Dip, 20);
        tv.SetTextColor(Android.Graphics.Color.WhiteSmoke);
        tv.LayoutParameters = lp;

        rl.AddView(imageView);
        rl.AddView(tv);

        return rl;
    }

但TextView始终显示在ImageView之上。

3 个答案:

答案 0 :(得分:1)

查看this question

当您致电rl.AddView(tv)时,您应该包含LayoutParams rl.AddView(tv, lp)

答案 1 :(得分:0)

你必须使用 imageView.setLayoutParams(lp),以便将params分配给您的视图。

How do you setLayoutParams() for an ImageView?

答案 2 :(得分:0)

由于我的内容不是动态的,我只是通过在Paint中编辑我的图像并在图像下方放置文本来解决这个问题。然后我把它作为ImageView的背景。