快過年了,先祝大家新年快了!今天是年前的最後一天上班了,下午也沒什麼事了,就等着下班的時候打掃打掃衛生,然後就各回各家各找各媽,過年了。
今天就把前段時間使用的Gridlayout的使用總結一下。整個界面的效果圖如下:
考慮到需求每一item的寬和高都不固定,比如國家地理現在它相對7日更新是2:1的大小,以後有可能它們會是1:1的大小,爲了更好的做適應選用了Gridlayout做基礎的佈局,整個界面做基本的劃分如下九個部分:
由於界面上item的個數是不固定的,現在是九個以後可能會有是個或者更多,所以我們按最小的item來劃分整個界面佈局,這樣就將整個界面劃分成3行7列。
這樣在Gridlayout添加view的時候控制每一個view所佔的區域,完成整個頁面的佈局
通過在代碼實現這種佈局主要用到的LayoutParams的兩個屬性,一個是columnSpec另一個是rowSpec,這兩個屬性的值確定了以後整個item在gridlayout中的位置也就確定了,例如編號爲1 的item,通過設置LayoutParams設定位置代碼如下
GridLayout.LayoutParams param = new GridLayout.LayoutParams();
param.columnSpec = GridLayout.spec(0, 1);
param.rowSpec = GridLayout.spec(0, 1);
view.setLayoutParams(param);
gridlayout.addView(view);
其中columnSpec即爲設置該view所站的列的下標和列的數目,rowSpec即爲所佔的行的下標和行的數目。通過代碼可以解釋爲view在Gridlayout中的位置爲第0行第0列寬佔一列高佔一行。
同樣其他的view設置好columnSpes和rowSpec就可以確定其在Gridlayout中的位置,每一個item的參數如下圖,參數意義爲(X, Y ,row,column)。