在xamarin

时间:2016-06-16 09:19:22

标签: c# android xamarin xamarin.android

我尝试使用Xamarin Android调整控件。

我使用GridView做了一个foreach循环:

var layout = new GridLayout(this);        
        SetContentView(layout); 

        foreach(JObject s in theArray)
        {
            string Text = s.GetValue("Name").ToString();

            var sbLabel = new TextView(this);
            sbLabel.Text = Text;

            var sbButton = new Button(this);
            sbButton.Text = "Info";

            layout.AddView(sbLabel);
            layout.AddView(sbButton);

        }

但我希望TextView和Button在彼此之下。

现在看起来如何:
enter image description here

我希望它看起来如何:
enter image description here

有人可以帮我正确对齐吗?如果可能,也以表格为中心。

谢谢!

1 个答案:

答案 0 :(得分:1)

这可以通过将LabelButton包裹在LinearLayout中来完成:

for (int i = 1; i < 4; i++)
{
    var relative = new LinearLayout(this);
    relative.Orientation = Orientation.Vertical;

    var sbLabel = new TextView(this);
    sbLabel.Gravity = Android.Views.GravityFlags.CenterHorizontal;

    var sbButton = new Button(this);

    sbLabel.Text = i.ToString(); ;

    sbButton.Text = "Info";

    relative.AddView(sbLabel);
    relative.AddView(sbButton);
    layout.AddView(relative);
}

在替代中,您也可以使用RelativeLayout(性能更高)执行此操作(代码更多,您必须拥有Id Label }):

for (int i = 1; i < 4; i++)
{
    var relative = new RelativeLayout(this);
    var params1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WrapContent, RelativeLayout.LayoutParams.WrapContent);

    var sbLabel = new TextView(this);
    var layoutparams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WrapContent, RelativeLayout.LayoutParams.WrapContent);
    layoutparams.AddRule(LayoutRules.CenterHorizontal);
    sbLabel.LayoutParameters = layoutparams;
    var sbButton = new Button(this);

    sbLabel.Id = i;
    sbLabel.Text = i.ToString();

    sbButton.Text = "Info";

    params1.AddRule(LayoutRules.Below, sbLabel.Id);
    relative.AddView(sbLabel);
    relative.AddView(sbButton, params1);

    layout.AddView(relative);
}

最终结果(上述两个选项都相同):

enter image description here