TableRow динамически создается с различным содержанием - PullRequest
0 голосов
/ 14 июня 2011

Я создаю 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 полностью независимыми от каждогодругой

1 Ответ

2 голосов
/ 14 июня 2011

Вы можете установить диапазон просмотра в таблице с помощью 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);
}
...