【Android】不知道的 setLayoutParams

動態建立Layout的時候,LayoutParams 是必需要設置的參數,關於 setLayoutParams 知道多少呢?java

  1. setLayoutParams 是設給父節點的。 文檔裏說的清楚:

Set the layout parameters associated with this view. These supply parameters to the parent of this view specifying how it should be arranged. There are many subclasses of ViewGroup.LayoutParams, and these correspond to the different subclasses of ViewGroup that are responsible for arranging their children.佈局

也就是說這個setLayoutParams()是給其父控件看的,只有父類能夠改變子View的位置佈局,而不是說子View能夠隨意設置。this

  1. setLayoutParams 類型不能隨便給。 清楚了LayoutParams是根據父節點來設置的,雖然使用的時候建立一個 ViewGroup.LayoutParams 也可以設置成功,但仍是要根據父節點的類型來定義爲具體的 RelativeLayout.LayoutParams、LinearLayout.LayoutParams等,不然運行的時候會拋出異常的。ci

    <!-- lang: java -->文檔

    RelativeLayout.LayoutParams layoutParams= new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);it

    <!-- lang: java -->class

    layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);sso

    <!-- lang: java -->layout

    view.setLayoutParams(layoutParams);異常

相關文章
相關標籤/搜索