2017-05-07 9 views
0

2つのボタンを並べてテーブルレイアウトを作成しようとしています。私は周りに読んできたが、私はそれが画面上に何かを表示するように見えることはできません。これは私の現在のTableLayoutのコードです。xamarin各行に2つのボタンがあるテーブルレイアウトを作成する

TableLayout ll = FindViewById<TableLayout>(Resource.Id.buttonLayout); 
     TableLayout llInner = new TableLayout(this); 
     TableLayout.LayoutParams lp = new TableLayout.LayoutParams(LinearLayout.LayoutParams.FillParent, LinearLayout.LayoutParams.WrapContent); 
     llInner.Orientation = Orientation.Horizontal; 
     llInner.LayoutParameters = lp; 
     llInner.WeightSum = 2; 
     ll.AddView(llInner); 
     var i = 0; 
     var row = new TableRow(this); 
     //TableRow.LayoutParams rowlayout = new TableRow.LayoutParams(TableRow.LayoutParams.MatchParent, TableRow.LayoutParams.WrapContent); 
     row.LayoutParameters = lp; 

     foreach (var series1 in series) 
     { 
      var b = new Button(this); 
      b.Text = series1.Series; 
      //lp = new TableLayout.LayoutParams(1, LinearLayout.LayoutParams.WrapContent); 
      b.LayoutParameters = lp; 
      row.AddView(b); 
      i =+ 1; 
      if (i > 1) 
      { 
       llInner.AddView(row, new TableLayout.LayoutParams(TableLayout.LayoutParams.MatchParent, TableLayout.LayoutParams.WrapContent)); 
       row = new TableRow(this); 
       row.LayoutParameters = lp; 
       i = 0; 
      } 
     } 

どのような提案ですか?事前に

おかげで、

ビョルン

+0

こんにちは、なぜ、.axmlページを使用しようとしないでください。 Xamarinの伝統的なXamarinフォームでは、デザインページがopmitiseです。非常に便利です。 –

+0

sinds作成する必要があるボタンの量は動的なものです。これはAPIから受け取った情報に基づいています。したがって、私はいくつのボタンを作成する必要があるのか​​分かりません。 –

答えて

1

iは、お互いに次の2つのボタンでテーブルレイアウトを作成しようとしてきました。ちょうどあなたのコードから

buttonLayoutという名前の元TableLayout以外に、あなたは別のTableLayoutTableRowを作成し、この列にButtonコントロールを追加しましたが、あなたはTableLayoutのビューにこの行を追加することはありません、そしてあなたLayoutParamsに注意する必要があります。すべてのコントロールにTableLayout.LayoutParamsを使用しましたが、その内部にはLinearLayout.LayoutParamsがあります。これは正しくありません。

私はあなたのseriesを持っていないので、私は本当にここで私は、サンプルコードを投稿し、あなたがforeachでやっているのか理解できません。

TableLayout ll = FindViewById<TableLayout>(Resource.Id.buttonLayout); 

ll.WeightSum = 2; 
ll.Orientation = Orientation.Horizontal; 

TableRow row = new TableRow(this); 
TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.MatchParent, TableRow.LayoutParams.WrapContent); 
row.LayoutParameters = lp; 

var b = new Button(this); 
b.Text = "Button1"; 
b.LayoutParameters = new TableRow.LayoutParams(TableRow.LayoutParams.MatchParent, TableRow.LayoutParams.WrapContent); 
row.AddView(b); 

var bb = new Button(this); 
bb.Text = "Button2"; 
bb.LayoutParameters = new TableRow.LayoutParams(TableRow.LayoutParams.MatchParent, TableRow.LayoutParams.WrapContent); 
row.AddView(bb); 

ll.AddView(row); 
ll.Invalidate(); 
0

私はwasnというもののアロットをしていました必要はありません。しかし、私の愚かな間違いは私がi = + 1をした部分でした。 i + = 1の代わりに;

これは私のコードが今見える方法です。そのワットは今やる必要があります。

TableLayout ll = FindViewById<TableLayout>(Resource.Id.buttonLayout); 
      //TableLayout llInner = new TableLayout(this); 
      TableRow.LayoutParams lp = new TableRow.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.MatchParent); 
      //ll.Orientation = Orientation.Horizontal; 
      //ll.LayoutParameters = lp; 
      //ll.WeightSum = 2; 
      //ll.AddView(llInner); 
      var i = 0; 
      var row = new TableRow(this); 
      row.WeightSum = 2; 
      //TableRow.LayoutParams rowlayout = new TableRow.LayoutParams(TableRow.LayoutParams.MatchParent, TableRow.LayoutParams.WrapContent); 
      //row.LayoutParameters = lp; 

      foreach (var series1 in series) 
      { 
       var b = new Button(this); 
       b.Text = series1.Series; 
       lp.Weight = 1; 
       //lp = new TableLayout.LayoutParams(1, LinearLayout.LayoutParams.WrapContent); 
       b.LayoutParameters = lp; 
       row.AddView(b); 
       i += 1; 
       if (i > 1) 
       { 
        ll.AddView(row, new TableLayout.LayoutParams(TableLayout.LayoutParams.MatchParent, TableLayout.LayoutParams.WrapContent)); 
        row = new TableRow(this); 
        row.LayoutParameters = lp; 
        i = 0; 
       } 

私はもうしばらくそれを使いこなしていたので、たくさんのものがコメントされています。

関連する問題