动态创建不同内容的TableRow

发布于 2024-11-15 10:05:01 字数 1072 浏览 3 评论 0原文

我正在动态创建 TableRows 。这些 TableRows 有两种类型的内容。 有些有 4 个视图。 有些有 2 个视图。

问题是 TableRows 有两个,试图占据与有四个的布局相同的空间。 正在发生这种情况:

Img ThisTextViewHasThisSize

Img TV0 ____________ ______TV1 TV2

...

    TableLayout tl = (TableLayout) findViewById(R.id.myTableLayout);

    for (int i = 0; i < array.length; i++) {

        TableRow tr = new TableRow(this);

        ImageButton button = new ImageButton(this);
        tr.addView(button);

        TextView tv0 = new TextView(this);
        tv0.setText(array[i].something0());

            if (another type of TableRow) {
            TextView tv1 = new TextView(this);
            TextView tv2 = new TextView(this);
            tv1.setText(array[i].something1());
            tv2.setText(array[i].something2());
            tr.addView(tv1);
            tr.addView(tv2);

        }
        tr.addView(tv0);

        tl.addView(tr);
    }

有人可以告诉我如何让TableRows布局完全相互独立?

I am creating TableRows dynamically. And there are two types of content for these TableRows.
Some have 4 Views.
And some have 2 Views.

The problem is that TableRows with two, try to occupy the same space as the layout of which have four.
This is happening:

Img ThisTextViewHasThisSize

Img TV0 __________________TV1 TV2

...

    TableLayout tl = (TableLayout) findViewById(R.id.myTableLayout);

    for (int i = 0; i < array.length; i++) {

        TableRow tr = new TableRow(this);

        ImageButton button = new ImageButton(this);
        tr.addView(button);

        TextView tv0 = new TextView(this);
        tv0.setText(array[i].something0());

            if (another type of TableRow) {
            TextView tv1 = new TextView(this);
            TextView tv2 = new TextView(this);
            tv1.setText(array[i].something1());
            tv2.setText(array[i].something2());
            tr.addView(tv1);
            tr.addView(tv2);

        }
        tr.addView(tv0);

        tl.addView(tr);
    }

Someone can tell me how to let the TableRows layouts totally independent from each other?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

说谎友 2024-11-22 10:05:01

您可以使用 TableRow.LayoutParams 设置表中视图的跨度。例如:

TableRow tr = new TableRow(this);

//all rows have this button
ImageButton button = new ImageButton(this);
tr.addView(button);

TextView tv0 = new TextView(this);
tv0.setText("hey");

if (some condition == true) {
    TextView tv1 = new TextView(this);
    TextView tv2 = new TextView(this);
    tv1.setText("heay 2");
    tv2.setText("hey 3");
    tr.addView(tv0);
    tr.addView(tv1);
    tr.addView(tv2);
}else {
    TableRow.LayoutParams trlp = new TableRow.LayoutParams();
    trlp.span = 3;
    tv.setLayoutParams(trlp);
    tr.addView(tv0);
}

You can set the span of a view within the table by using TableRow.LayoutParams. Eg:

TableRow tr = new TableRow(this);

//all rows have this button
ImageButton button = new ImageButton(this);
tr.addView(button);

TextView tv0 = new TextView(this);
tv0.setText("hey");

if (some condition == true) {
    TextView tv1 = new TextView(this);
    TextView tv2 = new TextView(this);
    tv1.setText("heay 2");
    tv2.setText("hey 3");
    tr.addView(tv0);
    tr.addView(tv1);
    tr.addView(tv2);
}else {
    TableRow.LayoutParams trlp = new TableRow.LayoutParams();
    trlp.span = 3;
    tv.setLayoutParams(trlp);
    tr.addView(tv0);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文