Android-展开列会使列的宽度变得更宽

时间:2018-12-10 03:36:09

标签: android android-tablelayout

我有一个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是否应该是未拉伸的列?

那么,最后,如何解开拉伸的列并拉伸另一列而又没有这个宽度问题呢?谢谢。

0 个答案:

没有答案