2016-06-16 51 views
1

私はXamarin Androidを使用してコントロールを調整しようとしています。xamarinで動的に調整

私は、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にとボタンがお互いの下になりたいです。

それが今どのように見えるか

:私はそれを見てみたいどのよう
enter image description here


enter image description here

を誰かがこれを適切に合わせるようにして私を助けることができますか?可能であれば、フォームの中央にも配置します。

ありがとうございます!

答えて

1

これはあなたLinearLayoutLabelButtonをラップすることにより行うことができます代替で

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(よりパフォーマンス)でこれを行うことができますあまりにも(それは少しより多くのコードだと、持っていなければならず、Labelの場合はId):

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); 
} 
(上記の両方のオプションについて同じ)3210

最終結果

enter image description here

+1

ありがとう!上記のラベルを中央に置くことは可能ですか? – Jesse

+1

答えを更新しました。それを確認してください。 – jzeferino

関連する問題