动态生成的表不显示任何行

时间:2014-01-16 18:37:38

标签: android tablelayout

我正在尝试创建一个包含1行的表,第一列是标题的名称,下一列是一个小的imageView图标。我无法弄清楚为什么没有显示出来。

这是我的代码。我将在下面展示我想要复制的xml。

这里我只是想创建一个表。然后我计划使用for循环来生成具有不同标题的多个表(这是为了将来使用。)

RelativeLayout relative = new RelativeLayout(context);

        //set layout
        LayoutParams relativeLayoutParams = new LayoutParams(
                LayoutParams.MATCH_PARENT,
                LayoutParams.MATCH_PARENT
        );
        relative.setLayoutParams(relativeLayoutParams);

        //create table for each header
        TableLayout table = new TableLayout(context);
        TableRow tableRow = new TableRow(context);

        //set layout
        LayoutParams tableLayoutParams = new LayoutParams(
                LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT
        );
        LayoutParams tableRowLayout = new LayoutParams(
                LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT
        );

        tableLayoutParams.setMargins(15, 10, 0, 0);
        table.setBackgroundResource(R.drawable.rectangle);

        //Set layout params for Table & Row
        table.setLayoutParams(tableLayoutParams);
        tableRow.setLayoutParams(tableRowLayout);

        //Create textView to contain header Title and icon
        TextView tvHeader = new TextView(context);
        ImageView infoIcon = new ImageView(context);

        LayoutParams headerLayoutParams = new LayoutParams(
                LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT
        );
        LayoutParams iconLayoutParams = new LayoutParams(20,20);
        iconLayoutParams.setMargins(10, 0, 0, 0);

        //set icon image
        infoIcon.setBackgroundResource(R.drawable.information);

        // Set textView layout params
        tvHeader.setLayoutParams(headerLayoutParams);
        // Set icon layout params
        infoIcon.setLayoutParams(iconLayoutParams);

        //Assign the header text
        tvHeader.setText("testHeader");

        //Add the TextView & Icon to the row
        tableRow.addView(tvHeader);
        tableRow.addView(infoIcon);

        //Add the rows to the table
        table.addView(tableRow);

        relative.addView(table);

        setContentView(relative);

这是我想要生成的xml

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">

<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/rectangle"
    android:layout_marginLeft="20dp"
    android:layout_marginTop="20dp">

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="column1"
            android:id="@+id/textView" />

        <ImageView
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:text="column2"
            android:id="@+id/image"
            android:src="@drawable/information"
            android:layout_marginLeft="15dp" />
    </TableRow>
</TableLayout>
</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

我已经设法找出问题所在。没有显示的原因是因为我会为TextView创建一个LinearLayout布局参数,而我应该使用“TableRow.LayoutParams”因为它是父级。这是我发现的类似answer 的类型,这再次证实了我的怀疑。