我有一个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是否应该是未拉伸的列?
那么,最后,如何解开拉伸的列并拉伸另一列而又没有这个宽度问题呢?谢谢。