MonoDroid格式新表格适合TableLayout

时间:2011-12-28 23:48:00

标签: android xamarin.android

似乎无法从活动中找到任何这样做的例子。我可以将表格行添加到表格布局中,但它不与在axml中设置的现有列对齐。我想要的只是在axml中设置我的标题行,然后从活动中动态添加它。

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scannedLO"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below ="@id/addPart"
android:layout_marginTop="20dip"
android:stretchColumns="3">
<TableRow  android:layout_marginBottom ="10dip">
  <TextView
    android:layout_column="1"
    android:text="Item Number"
    android:padding="3dip"
    android:layout_margin="2dip"/>
  <TextView
    android:layout_column="2"
    android:text="Item Description"
    android:padding="3dip"
    android:layout_margin="2dip"/>
  <TextView
    android:layout_column="3"
    android:text="Qty"
    android:padding="3dip"
    android:layout_margin="2dip"
    android:lines="1"/>
</TableRow>

当我在我的活动中这样做时:

        TableLayout tl = (TableLayout)FindViewById(Resource.Id.scannedLO);
        TableRow tr = new TableRow(this);
        TextView itemNumber = new TextView(this);
        TextView itemDescription = new TextView(this);
        TextView itemQuantity = new TextView(this);

                    TableRow.LayoutParams trparam = new TableRow.LayoutParams();
                    trparam.Span = 3;

                    itemNumber.Text = partnum;
                    itemDescription.Text = partdescr;
                    itemQuantity.Text = partquan;

                    tr.AddView(itemNumber);
                    tr.AddView(itemDescription);
                    tr.AddView(itemQuantity);

                    tl.AddView(tr);

我的所有3篇文字视图都在第一栏中结束。

1 个答案:

答案 0 :(得分:2)

Java中的setLayoutParams()方法映射到C#中的LayoutParameters属性。

row.LayoutParameters = ViewGroup.LayoutParams.FillParent;

通常,在从Java转换为C#时,Java中的getter / setter方法将映射到C#中的属性。例如,Java中的getText() / setText()通常会映射到C#中名为Text的属性。

修改(根据您更新的问题):

问题是你要为XML中的每个TextView设置列,但是你没有在代码中这样做:

itemNumber.LayoutParameters = new TableRow.LayoutParams(1);
itemDescription.LayoutParameters = new TableRow.LayoutParams(2);
itemQuantity.LayoutParameters = new TableRow.LayoutParams(3);

执行此操作后,视图应放在正确的列中。它们不会完美排列,因为在XML中你正在应用填充和边距,但在代码中也没有这样做。我建议为单元格创建可重用的样式,而不是重新定义那些无处不在的样式。