使用代碼定義GridLayout的方法

網(wǎng)上關(guān)于GridLayout的使用方法基本上都是用的xml文件,但既然是要使用網(wǎng)格布局寥粹,那說明準(zhǔn)備放入其中的子視圖肯定不少变过,都用xml寫太過繁瑣,那么如果我們想要代碼來描述涝涤,應(yīng)該怎么辦呢媚狰?

問題的關(guān)鍵就是要使用 GridLayout.Spec類。

下面我簡單演示一下利用GridLayout.Spec定義GridLayout阔拳,給出與xml等價的Java下和Xamarin.Android代碼崭孤;


1.

定義子視圖位于4行4列

android:columnCount="3"
android:rowCount="3"

Java

        GridLayout.Spec row = GridLayout.spec(3);
        GridLayout.Spec col = GridLayout.spec(3);

        Button view = new Button(context);
        view.setLayoutParams(new GridLayout.LayoutParams(row, col));
        gridLayout.addView(view);

Xamarin.Android

需要注意的是,在Xamarin.Android下GridLayout.spec不是GridLayout.Spec糊肠,而是GridLayout.InvokeSpec辨宠。

    var row = GridLayout.InvokeSpec(3);
    var col = GridLayout.InvokeSpec(3);

    var button = new Button(context);
    button.LayoutParameters = new GridLayout.LayoutParams(row, col);
    gridLayout.AddView(button);

2.

定義子視圖位于4行4列,橫跨2行罪针,縱向跨3列

android:columnCount="3"
android:rowCount="3"
android:layout_rowSpan = "2" 
android:layout_columnSpan = "3"   

Java

        GridLayout.Spec row = GridLayout.spec(3,2);
        GridLayout.Spec col = GridLayout.spec(3,3);

        Button view = new Button(context);
        view.setLayoutParams(new GridLayout.LayoutParams(row, col));
        gridLayout.addView(view);

Xamarin.Android

    var row = GridLayout.InvokeSpec(3,2);
    var col = GridLayout.InvokeSpec(3,3);

    var button = new Button(context);
    button.LayoutParameters = new GridLayout.LayoutParams(row, col);
    gridLayout.AddView(button);

3.

定義子視圖位于4行4列彭羹,橫縱的比重都為1;

android:columnCount="3"
android:rowCount="3"
android:layout_rowWeight="1" 
android:layout_columnWeight="1"

Java

        GridLayout.Spec row = GridLayout.spec(3,1.0f);
        GridLayout.Spec col = GridLayout.spec(3,1.0f);

        Button view = new Button(context);
        view.setLayoutParams(new GridLayout.LayoutParams(row, col));
        gridLayout.addView(view);

Xamarin.Android

    var row = GridLayout.InvokeSpec(3,1.0f);
    var col = GridLayout.InvokeSpec(3,1.0f);

    var button = new Button(context);
    button.LayoutParameters = new GridLayout.LayoutParams(row, col);
    gridLayout.AddView(button);

這里需要注意和2代碼的不同在于傳遞給GridLayout.spec方法的參數(shù)類型不同泪酱,如果是int型則表示是size派殷,如果是float型則表示weight还最。

注意:為了使子視圖完全按照我們給定的權(quán)重進(jìn)行布局,我們可以將params的width和height設(shè)為0毡惜,但在Android5.1版本上使用該方法可能會出現(xiàn)子視圖不可見的情況拓轻,這個時候我們還需要添加params.setGravity(Gravity.FILL);

GridLayout.spec還有更復(fù)雜的重載版本。


Xamarin.Android都有與之對應(yīng)的方法经伙,只不過調(diào)用名為InvokeSpec而已扶叉。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市帕膜,隨后出現(xiàn)的幾起案子枣氧,更是在濱河造成了極大的恐慌,老刑警劉巖垮刹,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件达吞,死亡現(xiàn)場離奇詭異,居然都是意外死亡荒典,警方通過查閱死者的電腦和手機(jī)酪劫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寺董,“玉大人覆糟,你說我怎么就攤上這事≌诳В” “怎么了滩字?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盯滚。 經(jīng)常有香客問我踢械,道長酗电,這世上最難降的妖魔是什么魄藕? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮撵术,結(jié)果婚禮上背率,老公的妹妹穿的比我還像新娘。我一直安慰自己嫩与,他們只是感情好寝姿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著划滋,像睡著了一般饵筑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上处坪,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天根资,我揣著相機(jī)與錄音架专,去河邊找鬼。 笑死玄帕,一個胖子當(dāng)著我的面吹牛部脚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播裤纹,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼委刘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鹰椒?” 一聲冷哼從身側(cè)響起锡移,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎漆际,沒想到半個月后罩抗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灿椅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年套蒂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茫蛹。...
    茶點(diǎn)故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡操刀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出婴洼,到底是詐尸還是另有隱情骨坑,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布柬采,位于F島的核電站欢唾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏粉捻。R本人自食惡果不足惜礁遣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肩刃。 院中可真熱鬧祟霍,春花似錦、人聲如沸盈包。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呢燥。三九已至崭添,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叛氨,已是汗流浹背呼渣。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工根暑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人徙邻。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓排嫌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缰犁。 傳聞我的和親對象是個殘疾皇子淳地,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,871評論 25 707
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,412評論 2 45
  • 編譯安裝libimobiledevice 環(huán)境準(zhǔn)備 確保你的開發(fā)環(huán)境滿足 Development Packages...
    喵帕斯閱讀 1,526評論 0 3
  • 當(dāng)開片的鏡頭搖到徐崢那一頭八九十年代標(biāo)準(zhǔn)的文藝男青年長發(fā)時,我就知道:好吧并徘,又是一部主打懷舊的片子遣钳。幾分鐘后響起的...
    CoreyShu閱讀 968評論 11 7
  • 感情的開始,需要雙方的首肯麦乞,感情的終止蕴茴,一方的背離即意味著結(jié)束。任意一方都有權(quán)在任何時間地點(diǎn)向?qū)Ψ叫娓星榈钠屏眩?..
    YoyoSuperyo閱讀 118評論 0 0