如何在Android中使行扩展为表的全宽
我遵循了上的示例,但不幸的是,该行没有扩展到表的整个宽度(请参见右侧的黑色“border”/“background”如何如此之大,而其他地方的宽度仅为1px) 我希望第二列扩展,因此它将占用右侧所有可用空间 这是我正在使用的代码。请告诉我,如果有人知道我怎样才能把正确的“边界”设置为1px,而不是看起来那么糟糕,请告诉我如何在Android中使行扩展为表的全宽,android,border,android-tablelayout,Android,Border,Android Tablelayout,我遵循了上的示例,但不幸的是,该行没有扩展到表的整个宽度(请参见右侧的黑色“border”/“background”如何如此之大,而其他地方的宽度仅为1px) 我希望第二列扩展,因此它将占用右侧所有可用空间 这是我正在使用的代码。请告诉我,如果有人知道我怎样才能把正确的“边界”设置为1px,而不是看起来那么糟糕,请告诉我 for (int i = 0; i < tasks.size(); i++) { TaskDetail taskDetail =
for (int i = 0; i < tasks.size(); i++)
{
TaskDetail taskDetail = tasks.get(i);
TableRow row = new TableRow(this);
// Set the background/border colour to black
row.setBackgroundColor(Color.BLACK);
row.setPadding(1, 1, 1, 1);
TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
layoutParams.setMargins(0,0,1,0);
LinearLayout detailCell = new LinearLayout(this);
detailCell.setBackgroundColor(Color.parseColor("#FFE6F0"));
detailCell.setLayoutParams(layoutParams);
LinearLayout valueCell = new LinearLayout(this);
valueCell.setBackgroundColor(Color.WHITE);
valueCell.setLayoutParams(layoutParams);
TextView detailName = new TextView(this);
detailName.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
detailName.setText(taskDetail.getName());
detailName.setPadding(5, 10, 5, 5);
detailName.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
TextView valueName = new TextView(this);
valueName.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
valueName.setText(taskDetail.getValue());
valueName.setPadding(5, 10, 5, 5);
valueName.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
detailCell.addView(detailName);
valueCell.addView(valueName);
// Add to the screen layout
row.addView(detailCell);
row.addView(valueCell);
table.addView(row);
}
for(int i=0;i
将行中每列的权重设置为1.0f
,如下所示:
TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f);
...
...
row.setPadding(1, 1, 1, 1);
TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f);
layoutParams.setMargins(0,0,1,0);
LinearLayout detailCell = new LinearLayout(this);
...
...
只需进行如下更改:
TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f);
...
...
row.setPadding(1, 1, 1, 1);
TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f);
layoutParams.setMargins(0,0,1,0);
LinearLayout detailCell = new LinearLayout(this);
...
...
请遵循此链接:如果其他人好奇,我发现的另一种方法是添加detailName.setWidth(0);和valueName.setWidth(0);以及table.SetStretCharlColumns(true);通过这样做,您可以通过编程设置表布局,使列具有相等的宽度。