標籤:android blog http ar io sp java on div
http://blog.csdn.net/lilu_leo/article/details/11952717
有時候需要在在代碼中設定LayoutParams,自己為一個FrameLayout設定LayoutParams的時候,遇上如題問題,
java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
FrameLayout的父控制項是一個LinearLayout控制項,問題出在,LinearLayout為子控制項分配空間的時候,擷取FrameLayout的LayoutParams的必須為LinearLayout.LayoutParams,而非FrameLayout.LayoutParams。
簡單的舉個栗子說明一下:最外層有ReLativeLayout A,裡面有兩個LinearLayout B、C,而B中又有一個一個FrameLayout D。如果要在代碼裡設定B的LayoutParams,B的LayoutParams要為RelativeLayout.LayoutParams。
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); B.setLayoutParams(params);
而D要設定的話,需要:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0); params.weight = 8; D.setLayoutParams(params);
這樣問題即可解決。還是自己有些基礎知識不牢固,寫到此。
android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams