我有一個視圖層次的活動如下:我們什麼時候知道什麼時候一個活動的意見已經奠定了
<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()創建視圖並從理論上闡明它們。但他們的意見並不能保證在最終的正確位置/尺寸。
對我來說這似乎並不幸福 - 這似乎是一個很好的方式來了解佈局在做什麼。 – 2012-04-16 22:09:56
是的,這是一種讓人瞭解佈局正在做什麼的優雅方式。 – mdupls 2012-04-17 10:37:32
Activity上的onLayoutSet方法將是一種更加優雅的方式。 – zmbq 2012-08-21 11:05:55