Android setLayoutParams 常見問題匯總

來源:互聯網
上載者:User

標籤:

setLayoutParams的用法

LayoutParams繼承於Android.View.ViewGroup.LayoutParams.

LayoutParams相當於一個Layout的資訊集合體,它封裝了Layout的位置、高、寬等資訊。假設在螢幕上一塊地區是由一個Layout佔領的,如果將一個View添加到一個Layout中,最好告訴Layout使用者期望的布局方式,也就是將一個認可的layoutParams傳遞進去。

       但LayoutParams類也只是簡單的描述了寬高,寬和高都可以設定成三種值:       1,一個確定的值;       2,FILL_PARENT,即填滿(和父容器一樣大小);       3,WRAP_CONTENT,即包裹住組件就好。

在JAVA代碼中動態構建的布局,常常這樣寫:

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

上面這一句話其實是子對父的,也就是說,父布局下的子控制項要設定這句話。

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

很顯然上面這句應該這樣寫才算準確:

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

這表示這個子控制項的父布局是一個TableRow , 這樣的LayoutParams 太多,所以應明確指明。

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

FrameLayout下動態設定子控制項置中,動態用JAVA代碼要這樣實現:

FrameLayout.LayoutParams lytp = new FrameLayout.LayoutParams(80,LayoutParams.WRAP_CONTENT);lytp .gravity = Gravity.CENTER;btn.setLayoutParams(lytp);

RelativeLayout下動態設定子控制項置中:

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);
setlayoutparams報錯
textView.setLayoutParams(new TextSwitcher.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

為什麼要用TextSwitcher的LayoutParams呢。

查一查API,可以看到這麼一句話These supply parameters to the parent of this view specifying how it should be arranged。

也就是說一定要用父控制項的LayoutParams。如果父控制項是LinearLayout,當然就必須寫成LinearLayout.LayoutParams

LayoutParams有多個控制項的類,要引用哪個類關鍵是要看父控制項是什麼樣的view控制項.

Android setLayoutParams 常見問題匯總

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.