如果想要讓GridLayout中的子元素能夠平均配置設定,就需要用到
android:layout_columnWeight="1"
android:layout_rowWeight="1"
該屬性在API21 (android5.0)時引入,如果要實作全部平均效果,可以在給子元素指定LayoutParams裡,指定:
params.columnSpec=GridLayout.spec(GridLayout.UNDEFINED, 1f);
PS: GridLayout.UNDEFINED 代表不指定列的位置。
則效果如下(循環添加20個按鈕):
如果想對某一個位置的子元素做出修改,則可以單獨指定該元素的Spec, 如要實作下列的效果:
其中的第一個元素,位置在(0,0),它的Spec就可以這樣寫:
params.rowSpec = GridLayout.spec(0,1,3f);
// 第一個0代表第0行
// 第二個1代表占了多少行
// 第三個3f代表權重是多少
params.columnSpec = GridLayout.spec(0,4,1f);
// 第一個0代表第0列
// 第二個4代表占了多少列
// 第三個1f代表權重是多少
注意:
GridLayout.spec(); 這個方法是一個重點,需要好好看一下,而且由于它有幾個重載方法,使用時也要注意。比如說下面兩個方法:
public static Spec spec(int start, int size)
public static Spec spec(int start, float weight)
是以,如果調用的是第二個方法,一定要注意float參數的表示方法,加個f,如:GridLayout.spec(0,1f); 關于weight屬性的了解可參考:https://www.cnblogs.com/yongdaimi/p/11821616.html
參考連結:
1. GridLayout使用總結
2. GridLayout 平均配置設定