溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android學(xué)習(xí)--LayoutParams

發(fā)布時間:2020-07-17 00:41:58 來源:網(wǎng)絡(luò) 閱讀:216 作者:uncom2005 欄目:移動開發(fā)

LayoutParams繼承于Android.View.ViewGroup.LayoutParams.

       LayoutParams相當(dāng)于一個Layout的信息包,它封裝了Layout的位置、高、寬等信息。假設(shè)在屏幕上一塊區(qū)域是由一個Layout占領(lǐng)的,如果將一個View添加到一個Layout中,最好告訴Layout用戶期望的布局方式,也就是將一個認(rèn)可的layoutParams傳遞進去。

       可以這樣去形容LayoutParams,在象棋的棋盤上,每個棋子都占據(jù)一個位置,也就是每個棋子都有一個位置的信息,如這個棋子在4行4列,這里的“4行4列”就是棋子的LayoutParams。


       但LayoutParams類也只是簡單的描述了寬高,寬和高都可以設(shè)置成三種值:

       1,一個確定的值;

       2,F(xiàn)ILL_PARENT,即填滿(和父容器一樣大?。?/p>

       3,WRAP_CONTENT,即包裹住組件就好。


在JAVA中動態(tài)構(gòu)建的布局,常常這樣寫:


setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

上面這一句話其實是子對父的,也就是說,父布局下的子控件要設(shè)置這句話。


因為布局很多,雖然都繼承至ViewGroup但是各個布局還是有很大的不同。


很顯然上面這句應(yīng)該這樣寫才算準(zhǔn)確:


setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT,TableRow.LayoutParams.FILL_PARENT));

這表示這個子控件的父布局是一個TableRow , 這樣的LayoutParams 太多,所以應(yīng)明確指明。


 


下面分別說下兩個常用到布局:


1. FrameLayout下動態(tài)設(shè)置子控件居中,動態(tài)用JAVA代碼要這樣實現(xiàn):


FrameLayout.LayoutParams lytp = new FrameLayout.LayoutParams(80,LayoutParams.WRAP_CONTENT);

lytp .gravity = Gravity.CENTER;

btn.setLayoutParams(lytp);

2. RelativeLayout下動態(tài)設(shè)置子控件居中:


RelativeLayout.LayoutParams lp=new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 

lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); 

lp.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE); 

btn1.setLayoutParams(lp);


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI