Android XML与代码tablelayout的区别

时间:2014-10-18 11:45:55

标签: android xml android-linearlayout tablelayout

我想使用代码生成一个非常大的TableLayout。 XML工作得很好,但是文件变得越来越大,并且在将来进行更改将会非常繁琐。最终布局将在右侧有一个Horizo​​ntalScrollview,但我的问题最好说明如下。

XML文件是这样的。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent">
    <TableLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent">
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Table 1"/></TableRow>
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Table 1"/></TableRow>
    </TableLayout>
    <TableLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent">
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Table 2"/></TableRow>
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Table 2"/></TableRow>
    </TableLayout>
</LinearLayout>

这样输出(抱歉,不能发布截图)

Table 1 Table 2
Table 1 Table 2

当我使用此代码时

LinearLayout ll = new LinearLayout(this);
ll.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));
TableLayout table1 = new TableLayout(this);
table1.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT,TableLayout.LayoutParams.MATCH_PARENT));
for (int x = 0;x < 2;x++) {
    TableRow row = new TableRow(this);
    row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT));
    TextView tv = new TextView(this);
    tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT));
    tv.setText("Table 1");
    row.addView(tv);
    table1.addView(row);
}
TableLayout table2 = new TableLayout(this);
table2.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT,TableLayout.LayoutParams.MATCH_PARENT));
for (int x = 0;x < 2;x++) {
    TableRow row = new TableRow(this);
    row.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT));
    TextView tv = new TextView(this);
    tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT));
    tv.setText("Table 2");
    row.addView(tv);
    table2.addView(row);
}
ll.addView(table1);
ll.addView(table2);
setContentView(ll);

它显示输出

Table 1
Table 1

我丢失了第二个tablelayout。如何更改代码样式以查看第二个tablelayout?

1 个答案:

答案 0 :(得分:0)

我没有找到为什么第二个表在代码中不起作用但我能够通过

解决我的问题
  1. 以XML格式设置LinearLayout和TableLayouts。

  2. 然后引用TableLayouts并在代码中添加TableRows。