我有带有行的表格布局,并且在每一行中有一堆文本视图(全部以编程方式添加,没有 xml),我想要网格线,所以我试图通过 laoyoutparams 添加边距,但它看起来像 TableLayout.LayoutParams 仅适用于 textviews到行,所以我在行上得到一个边距,但在单元格上没有。我也尝试过在单元格上使用 RelativeLaout.LayoutParams,但 thaqt 也不起作用。任何人都可以为我的问题提出任何解决方案?
问问题
1289 次
1 回答
1
您应该使用正确LayoutParams
的视图。在添加视图时:
TableLayout
; 采用TableLayout.LayoutParams
TableRow
; 使用TableRow.LayoutParams
.
编辑:我已经编辑了代码。您希望某些单元格有一些黑色空间。您可以通过为该视图设置相同的背景颜色(或为行和单元格上的视图设置透明背景)来实现这一点。我认为使用 tableLayout 为 textViews 设置相同的 bg 颜色更容易。
这是您可以尝试的完整代码示例(添加颜色以轻松查看输出):
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TableLayout tableLayout = createTableLayout(16, 14);
setContentView(tableLayout);
makeCellEmpty(tableLayout, 1, 6);
makeCellEmpty(tableLayout, 2, 3);
makeCellEmpty(tableLayout, 3, 8);
makeCellEmpty(tableLayout, 3, 2);
makeCellEmpty(tableLayout, 4, 8);
makeCellEmpty(tableLayout, 6, 9);
}
public void makeCellEmpty(TableLayout tableLayout, int rowIndex, int columnIndex) {
// get row from table with rowIndex
TableRow tableRow = (TableRow) tableLayout.getChildAt(rowIndex);
// get cell from row with columnIndex
TextView textView = (TextView)tableRow.getChildAt(columnIndex);
// make it black
textView.setBackgroundColor(Color.BLACK);
}
private TableLayout createTableLayout(int rowCount, int columnCount) {
// 1) Create a tableLayout and its params
TableLayout.LayoutParams tableLayoutParams = new TableLayout.LayoutParams();
TableLayout tableLayout = new TableLayout(this);
tableLayout.setBackgroundColor(Color.BLACK);
// 2) create tableRow params
TableRow.LayoutParams tableRowParams = new TableRow.LayoutParams();
tableRowParams.setMargins(1, 1, 1, 1);
tableRowParams.weight = 1;
for (int i = 0; i < rowCount; i++) {
// 3) create tableRow
TableRow tableRow = new TableRow(this);
tableRow.setBackgroundColor(Color.BLACK);
for (int j= 0; j < columnCount; j++) {
// 4) create textView
TextView textView = new TextView(this);
textView.setText(String.valueOf(j));
textView.setBackgroundColor(Color.WHITE);
textView.setGravity(Gravity.CENTER);
// 5) add textView to tableRow
tableRow.addView(textView, tableRowParams);
}
// 6) add tableRow to tableLayout
tableLayout.addView(tableRow, tableLayoutParams);
}
return tableLayout;
}
这是此代码的输出,我们可以看到边距已正确应用:
于 2013-11-10T21:13:12.357 回答