Android - растяжение столбца делает ширину столбцов странной - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть TableLayout.

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/tab">

</TableLayout>

, и вот как я динамически пытаюсь добавить к нему строку.

TableLayout tl = findViewById(R.id.tab);
tl.removeAllViews();
tl.setColumnStretchable(2,true);
//tl.setColumnStretchable(1,false);
TableLayout.LayoutParams lp = new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT,
            TableLayout.LayoutParams.WRAP_CONTENT);
lp.weight = 1;
TableRow.LayoutParams hparams1 = new TableRow.LayoutParams(0,TableRow.LayoutParams.MATCH_PARENT);
TableRow.LayoutParams hparams2 = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,TableRow.LayoutParams.MATCH_PARENT);
hparams1.setMargins(1,1,1,1);
hparams2.setMargins(1,1,1,1);
TableRow row = new TableRow(this);
row.setBackgroundColor(Color.BLACK);
row.setLayoutParams(lp);
TextView h1 = new TextView(this);
TextView h2 = new TextView(this);
TextView h3 = new TextView(this);
TextView h4 = new TextView(this);
h1.setText("col1");
h2.setText("col2");
h3.setText("col3");
h4.setText("col4");
h1.setTextSize(23);
h2.setTextSize(23);
h3.setTextSize(23);
h4.setTextSize(23);
h1.setBackgroundColor(Color.GREEN);
h2.setBackgroundColor(Color.GREEN);
h3.setBackgroundColor(Color.GREEN);
h4.setBackgroundColor(Color.GREEN);
h1.setLayoutParams(hparams2);
h2.setLayoutParams(hparams2);
h3.setLayoutParams(hparams1);
h4.setLayoutParams(hparams2);
row.addView(h1);
row.addView(h2);
row.addView(h3);
row.addView(h4);
tl.addView(row,0);

Это дает мне хорошую таблицу с шириной, равнойширина экрана и col1, col2, col4 с шириной, равной их содержанию, и col3 растянуты, чтобы заполнить остальную часть строки.Как это https://i.imgur.com/qGfYyxb.jpg

Но если я раскомментирую строку 4 или попытаюсь развернуть столбец в любом месте кода, то 4 столбца больше не занимают всю ширину строки, т.е.вся ширина экрана.Вот так https://i.imgur.com/js4jNAf.jpg

Почему это происходит?Разве col2 не должен быть столбцом без растяжения по умолчанию?

Итак, наконец, как мне растянуть растянутый столбец и растянуть другой столбец без этой странной проблемы ширины?Спасибо.

...