GridLayout 通过仅调整最后一列和行的大小来匹配父级 (Android Studio)

GridLayout matches parent by resizing the last column and row only (AndroidStudio)

我有一个 4 列 5 行的 GridLayout。如果为 layout_widthlayout_height 设置为 wrap_content,则所有单元格的大小都应该相同。但是,当我将其设置为 match_parent 时,除最后一行和最后一列中的单元格外,所有单元格都保持相同大小,最后一行的高度急剧增加以填充垂直 space 和最后一列的宽度增加以填充其余的水平 space。也就是说,大多数单元格根本不调整大小,第 5 行和第 4 列变得非常扭曲。

wrap_content:

match_parent:

如何让 GridLayout 在匹配父级时保持所有单元格的大小相同?

如果你有静态的行数和列数,你可以这样覆盖单元格视图的方法onMeasure(如果你想填充,例如,整个显示):

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  int width = getResources().getDisplayMetrics().widthPixels / COLUMN_COUNT;
  int height = getResources().getDisplayMetrics().heightPixels / ROW_COUNT;
  setMeasuredDimension(width, height);
}

将所有单元格设置为column_weight=x,其中x是相同的值(1)