我有一个带以下视图层次结构的活动:
<RelativeLayout>
<LinearLayout>
<GridLayout />
</LinearLayout>
</RelativeLayout>
顶部的RelativeLayout占据整个屏幕,而LinearLayout占据屏幕的一部分。我试图以这样的方式设置GridLayout子视图的大小,即对于n行和m列,单元格的大小直接与n、m值以及LinearLayout的宽度和高度相关联。
因此,例如,我正在尝试按以下方式获取单元格的宽度和高度:
int linearLayoutWidth = mLinearLayout.getMeasuredWidth();
int linearLayoutHeight = mLinearLayout.getMeasuredHeight();
...
int rows = mGridModel.getRows() + 1;
int columns = mGridModel.getColumns() + 1;
int cellWidth = (int) (linearLayoutWidth / columns);
int cellHeight = (int) (linearLayoutHeight / rows);
很不幸,当视图被创建时,mLinearLayout.getMeasuredWidth()不能返回正确的大小。它总是返回实际设备屏幕的宽度,直到视图完全布局完成 - 在这种情况下为时已晚。我已经根据最初完全不正确的值为我的子单元视图设置了大小。
我的问题是 - 我如何知道视图何时完全布局。我需要查询它们的正确或实际测量宽度/高度。
setContentView()创建视图并理论上将它们布局。但是视图不能保证在最终的正确位置/大小。