似乎无法从活动中找到任何这样做的例子。我可以将表格行添加到表格布局中,但它不与在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篇文字视图都在第一栏中结束。
答案 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中你正在应用填充和边距,但在代码中也没有这样做。我建议为单元格创建可重用的样式,而不是重新定义那些无处不在的样式。