GridLayout 通过仅调整最后一列和行的大小来匹配父级 (Android Studio)
GridLayout matches parent by resizing the last column and row only (AndroidStudio)
我有一个 4 列 5 行的 GridLayout
。如果为 layout_width
和 layout_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)
我有一个 4 列 5 行的 GridLayout
。如果为 layout_width
和 layout_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)