GridLayout: GridLayout中Spec屬性


如果想要讓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 平均分配

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM