關於setLayoutParams報錯

2022-11-24 22:06:57 字數 654 閱讀 9439

在繼承baseadapter的時候,用getview返回view的時候,用**控制佈局,需要用到view.setlayoutparams,但是報錯了,報的是型別轉換錯誤,經過研究,發現,這裡不能使用viewgroup.layoutparams而必須使用對應父view的layoutparams型別。如:某view被linearlayout包含,則該view的setlayoutparams引數型別必須是linearlayout.layoutparams。原因在於linearlayout(或其他繼承自viewgroup的layout,如:relativelayout)在進行遞迴佈局的時候,linearlayout會獲取子view的layoutparams,並強制轉換成linearlayout.layoutparams,如

1

linearlayout.layoutparams lp

=(linearlayout.layoutparams) child.getlayoutparams();

或者是如下定義:

1

layoutparams lp

=(layoutparams) child.getlayoutparams();

以轉換成內部型別linearlayout.layoutparams。