Как программно добавить tableRow в TableLayout в Xamarin

Итак, у меня есть макет, который содержит TableLayout, определенный в моем макете здесь

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="@drawable/defaultBackground_vert" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/mainLayout"> <TableLayout android:minWidth="25px" android:minHeight="25px" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/table"> </TableLayout> </LinearLayout> 

И я обращаюсь к нему в своем коде и пытаюсь добавить кнопку в строку таблицы и добавить этот tablerow в таблицу:

 private TableLayout _table private Button _button . . . _table = FindViewById<TableLayout>(Resource.Id.table); _button = new Button(this){Text = "<"}; _button = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent); var tableRow = new TableRow(this); tableRow.AddView(_button, 0); _table.AddView(tableRow, 0); 

Проблема в том, что tableRow не появляется при запуске моего приложения.

Вам нужно использовать TableRow.Layoutparams для кнопок. Попробуйте этот код.

  TableLayout _table = (TableLayout) findViewById(R.id.table); LayoutParams layoutParams = new TableRow.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); TableRow tableRow = new TableRow(this); Button _button = new Button(this); _button.setText(">>"); _button.setLayoutParams(layoutParams); tableRow.addView(_button, 0); _table.addView(tableRow, 0); 

Я переработал код выше, чтобы он был на C #, а не на Java, наслаждайтесь!

 TableLayout _table = (TableLayout)FindViewById(Resource.Id.tableLayout1); TableRow.LayoutParams layoutParams = new TableRow.LayoutParams( ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent); TableRow tableRow = new TableRow(this); Button _button1 = new Button(this); _button1.Text = "1"; _button1.LayoutParameters = layoutParams; Button _button2 = new Button(this); _button2.Text = "2"; _button2.LayoutParameters = layoutParams; Button _button3 = new Button(this); _button3.Text = "3"; _button3.LayoutParameters = layoutParams; tableRow.AddView(_button1, 0); tableRow.AddView(_button2, 1); tableRow.AddView(_button3, 2); _table.AddView(tableRow, 0); 

Если вы превратили свой код в xml, это будет похоже на

 <TableRow><Button /></TableRow> 

Поэтому вам нужно добавить layoutparams для каждого представления, которое вы создаете программным путем

  _button = new Button(this){Text = "<"}; _buttonparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent,ViewGroup.LayoutParams.MatchParent); _button.setLayoutParams(_buttonParams); var tableRow = new TableRow(this); LayoutParams _tableRowParams = new LayoutParams(-1,-2); tableRow.setLayoutParam(_tableRowParams); tableRow.AddView(_button, 0); _table.AddView(tableRow, 0);