【问题标题】:How to get row to extend for full width of the table in Android如何在Android中让行扩展到表格的整个宽度
【发布时间】:2013-11-06 03:30:46
【问题描述】:

我按照https://stackoverflow.com/a/7123217/2884981 的示例进行操作,但不幸的是,该行没有延伸到表格的整个宽度(看看黑色“边框”/背景如何在右侧如此之大,而其他地方只有 1 像素宽) .

我想要扩展第二列,所以它会占用右侧的所有可用空间。

这是我正在使用的代码。请,如果有人知道我如何将正确的“边框”设置为 1px 而不是看起来那么糟糕,请告诉我。

        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);
    }

【问题讨论】:

标签: android border android-tablelayout


【解决方案1】:

将行中每一列的weight 设置为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);

...
...

【讨论】:

  • 如果其他人好奇,我发现的另一种方法是添加 detailName.setWidth(0);和 valueName.setWidth(0);以及 table.setStretchAllColumns(true);通过这样做,您可以以编程方式设置表格布局,使列具有相等的宽度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
相关资源
最近更新 更多